首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Promise原理实现

首先先看一下 promise 的调用方式: // 实例化 Promise: new MyPromise((resolve, reject) => { setTimeout(() => {...resolve(1) //这里相当于给value赋值 }, 0) }).then(value => { console.log(value) }) 实现原理如下: const...const that = this //在函数体内部首先创建了常量 `that`,因为代码可能会异步执行,用于获取正确的 `this` 对象 that.state = PENDING //一开始 `Promise...onFulfilled, onRejected) { const that = this //首先判断两个参数是否为函数类型,因为这两个参数是可选参数 //当参数不是函数类型时,需要创建一个函数赋值给对应的参数,同时也实现了透传...至此,在promise中 resolve(1) 告诉了执行回调的时机和参数。 而then规定的是异步之后的回调函数。

47520

Promise实现原理

我们工作中免不了运用promise用来解决异步回调问题。平时用的很多库或者插件都运用了promise 例如axios、fetch等等。但是你知道promise是咋写出来的呢?...Promise 的声明 首先呢,promise肯定是一个类,我们就用class来声明。...解决异步实现 现在基本可以实现简单的同步代码,但是当resolve在setTomeout内执行,then时state还是pending等待状态 我们就需要在then调用的时候,将成功和失败存到各自的数组...秘籍规定了一种方法,就是在then里面返回一个新的promise,称为promise2:promise2 = new Promise((resolve, reject)=>{}) 将这个promise2...如果是promise,则取它的结果,作为新的promise2成功的结果 如果是普通值,直接作为promise2成功的结果 所以要比较x和promise2 resolvePromise的参数有promise2

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

图解 Promise 实现原理(三)—— Promise 原型方法实现

,它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。...本系列文章由浅入深逐步实现 Promise,并结合流程图、实例以及动画进行演示,达到深刻理解 Promise 用法的目的。...本系列文章有如下几个章节组成: 图解 Promise 实现原理(一)—— 基础实现 图解 Promise 实现原理(二)—— Promise 链式调用 图解 Promise 实现原理(三)—— Promise...原型方法实现 图解 Promise 实现原理(四)—— Promise 静态方法实现 一、【前言】 上一节中,实现Promise 的链式调用。...二、【错误处理】 之前为了讲解原理,只是实现了 onFulfilled ,对于 Promise 来说,除了成功还有失败,在失败时,要标记 Promise 的状态为 rejected, 并执行注册的 onRejected

90121

图解 Promise 实现原理(四)—— Promise 静态方法实现

本系列文章由浅入深逐步实现 Promise,并结合流程图、实例以及动画进行演示,达到深刻理解 Promise 用法的目的。...本系列文章有如下几个章节组成: 图解 Promise 实现原理(一)—— 基础实现 图解 Promise 实现原理(二)—— Promise 链式调用 图解 Promise 实现原理(三)—— Promise...原型方法实现 图解 Promise 实现原理(四)—— Promise 静态方法实现 一、前言 上一节中,实现Promise 的原型方法。...本系列图文讲解的是 Promise 的思想,实现的内容并不能完全满足 Promise/A+ 规范的所有要求。...四、参考资料 【翻译】Promises/A+规范 深入 Promise(一)——Promise 实现详解 30分钟,让你彻底明白Promise原理

82511

图解 Promise 实现原理(二)—— Promise 链式调用

本系列文章由浅入深逐步实现 Promise,并结合流程图、实例以及动画进行演示,达到深刻理解 Promise 用法的目的。...本系列文章有如下几个章节组成: 图解 Promise 实现原理(一)—— 基础实现 图解 Promise 实现原理(二)—— Promise 链式调用 图解 Promise 实现原理(三)—— Promise...原型方法实现 图解 Promise 实现原理(四)—— Promise 静态方法实现 一、前言 上一节中,实现Promise 的基础版本: //极简的实现+链式调用+延迟机制+状态 class Promise...二、链式调用的实现 先看下实现源码: //完整的实现 class Promise { callbacks = []; state = 'pending';//增加状态 value..._handle(callback)); } } 由上面的实现,我们可以看到: then 方法中,创建并返回了新的 Promise 实例,这是串行Promise的基础,是实现真正链式调用的根本。

1.4K42

图解 Promise 实现原理(一)—— 基础实现

本系列文章由浅入深逐步实现 Promise,并结合流程图、实例以及动画进行演示,达到深刻理解 Promise 用法的目的。...本系列文章有如下几个章节组成: 图解 Promise 实现原理(一)—— 基础实现 图解 Promise 实现原理(二)—— Promise 链式调用 图解 Promise 实现原理(三)—— Promise...原型方法实现 图解 Promise 实现原理(四)—— Promise 静态方法实现 本文适合对 Promise 的用法有所了解的人阅读,如果还不清楚,请自行查阅阮一峰老师的 《ES6入门 之 Promise...return getCourseDetailByCourse(course); }).then(function (courseDetail) { //do something }); 实现原理...this.callbacks.forEach(fn => fn(value)); }); } } 在 resolve 中增加定时器,通过 setTimeout 机制,将 resolve 中执行回调的逻辑放置到JS

1.4K30

Promise原理解析与实现

因为dom的promise标准已经被删除, 而harmony的promise既可以在浏览器中用又可以将来在nodejs中用, 我们当然是选harmony的promise啦 现在我们来尝试用100行左右代码实现一下...resolve(解决了), 另一个是流程失败的reject(拒绝了) 虽然外观略不同, 但不管是connect还是promise, 其内部都有一个stack或者queue的东西保存着全部的流, 在js中显然也就是一个数组...的链式由then中的resolve返回值加入, 而非一开始就全部塞入, 这就是promise和express中next的主要区别 继续试着实现promise function Promise(resolver...} 这里的all用到了一个Promise.deferred的函数, 这个函数格外重要 ---- Promise.deferred deferred的实现同样不难, 但其使用概率则是大大的, 可能比直接用...看到def, 才能看到Promise的精髓, 甚至jQuery反而提供defer作为主对象, promise不过是附属对象 我的完整Promise在这里 虽然目前Promise还不到100行, 但真正实现起来

79190

Promise原理浅析

Promise介绍 项目相关demo和代码地址 介绍 Promise 对象用于延迟(deferred) 计算和异步(asynchronous ) 计算.。...一个Promise对象代表着一个还未完成,但预期将来会完成的操作。 Promise 对象是一个返回值的代理,这个返回值在promise对象创建时未必已知。它允许你为异步操作的成功或失败指定处理方法。...一个简单版本的实现 /** * simple promise * @param {[type]} fun [description] */ function PromiseB(fun) {...会让代码变得更容易维护,像写同步代码一样写异步代码 了解promise原理,写个简单的实现版本就好了 promise实现方案有很多,可以看这里 相关阅读 Promise - MDN jQuery.Callbacks...() 如何实现一个ECMAScript 6 的promise功能

77290

Promise 原理探究

虽然ES6的generator和ES7的async await提供了更先进的异步编程解决方案,但是它们还是离不开Promise,比如generator的co库的实现以及await后面必须返回promise...因此有必要深入了解一下Promise原理。 看看下面这几道题,能不能轻松答出来?...MyPromise仅实现核心功能,不保证完全满足promise规范。 一、雏形(v1) Promise最基本的用法:调用resolve时,then的回调才会被执行,并得到resolve时的值。...实现分析 对比v2,先看下then方法的改造:除了onResolved以外,新增了一个onRejected参数,用于处理reject状态的回调。...实现分析 (1)每次调用then均返回一个新的Promise 这一点除了用于支持链式调用以外,还很好地解决了一个Promise的状态只能流转一次的规定,因为调用resolve或reject之后,这个Promise

2.2K70

前端-ES6中promise实现原理

顾名思义,promise中文意思就是承诺,也就是现在实现不了将来·····,但是将来这玩意谁说的准呢。就像你去泡妞,你可能许下各种诺言,但能不能实现,完全取决于你这人靠不靠谱。...等待承诺实现的过程中很漫长,所以你可以做一些其它的事情,没必要老是堵在这一条道上,也就是异步。...promise这妞有啥好 为了实现异步,一般要设置一个回调函数 setTimeout(function(){    console.log(1);    setTimeout(function()...能够实现链式调用,也就是说then方法返回的值也一定是个promise,这样你才能.then,.then的一直写下去。...其它 当然这个promise只是一个基本的实现,依然很脆弱,但基本上可以说有了一轮廓,剩下的部位各位看官自己添加,比如promise的all ,race,catch等。

59620

JS 异步系列 —— Promise 札记

Promise 研究 Promise 的动机大体有以下几点: 对其 api 的不熟悉以及对实现机制的好奇; 很多库(比如 fetch)是基于 Promise 封装的,那么要了解这些库的前置条件得先熟悉...Promise; 要了解其它更为高级的异步操作得先熟悉 Promise; 基于这些目的,实践了一个符合 Promise/A+ 规范的 repromise。...本札记系列总共三篇文章,作为之前的文章 Node.js 异步异闻录 的拆分和矫正。...Promise札记 Generator札记 Async札记 Promise/A+ 核心 在实现一个符合 Promise/A+ 规范的 promise 之前,先了解下 Promise/A+ 核心,想更全面地了解可以阅读...) => { console.log(data) }) .catch((err) => { console.log(err) }) Promise.wrap 的实现逻辑也顺带列出来了

1.1K30
领券