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

JS 手写: Promise

Promise 对象用于表示一个异步操作的最终完成 (或失败)及其结果值。 # 描述 一个 Promise 对象代表一个在这个 promise 被创建出来时不一定已知的值。...# Promise 的链式调用 我们可以用 promise.then(),promise.catch() 和 promise.finally() 这些方法将进一步的操作与一个变为已敲定状态的 promise...返回一个 promise,该 promise 在所有 promise 完成后完成。并带有一个对象数组,每个对象对应每个 promise 的结果。...# Promise.any(iterable) (opens new window) 接收一个 Promise 对象的集合,当其中的一个 promise 成功,就返回那个成功的 promise 的值。...失败,那么 Promise.all 返回的 promise 对象失败 在任何情况下,Promise.all 返回的 promise 的完成状态的结果都是一个数组 Promise.all = function

1.4K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Promise实现原理

    我们工作中免不了运用promise用来解决异步回调问题。平时用的很多库或者插件都运用了promise 例如axios、fetch等等。但是你知道promise是咋写出来的呢?...Promise 的声明 首先呢,promise肯定是一个类,我们就用class来声明。...秘籍规定了一种方法,就是在then里面返回一个新的promise,称为promise2:promise2 = new Promise((resolve, reject)=>{}) 将这个promise2...如果是promise,则取它的结果,作为新的promise2成功的结果 如果是普通值,直接作为promise2成功的结果 所以要比较x和promise2 resolvePromise的参数有promise2...(默认返回的promise)、x(我们自己return的对象)、resolve、reject resolve和reject是promise2的 class Promise{ constructor(

    1.1K20

    Promise原理浅析

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

    80690

    Promise原理浅析

    本文作者:IMWeb moonye 原文出处:IMWeb社区 未经同意,禁止转载 Promise介绍 项目相关demo和代码地址 介绍 Promise 对象用于延迟(deferred) 计算和异步...一个Promise对象代表着一个还未完成,但预期将来会完成的操作。 Promise 对象是一个返回值的代理,这个返回值在promise对象创建时未必已知。它允许你为异步操作的成功或失败指定处理方法。...这使得异步方法可以像同步方法那样返回值:异步方法会返回一个包含了原返回值的 promise 对象来替代原返回值。...会让代码变得更容易维护,像写同步代码一样写异步代码 了解promise原理,写个简单的实现版本就好了 promise的实现方案有很多,可以看这里 相关阅读 Promise - MDN jQuery.Callbacks...() 如何实现一个ECMAScript 6 的promise功能

    44310

    Promise 原理探究

    前言:你真的了解Promise吗 你真的了解Promise吗?对我而言,除了知道如何使用then解决回调地狱以外,其他的还真的一知半解。...因此有必要深入了解一下Promise原理。 看看下面这几道题,能不能轻松答出来?...假设 doSomething() 和 doSomethingElse() 返回一个 promise 对象,这些 promise 对象都代表了一个异步操作。...完整版(v4) 在完整版中,将加入以下的特性 支持then链式调用,每次调用then均返回一个新的promise 决议值为promise(非简单数值)以及 then返回promise时,需要反解出结果...实现分析 (1)每次调用then均返回一个新的Promise 这一点除了用于支持链式调用以外,还很好地解决了一个Promise的状态只能流转一次的规定,因为调用resolve或reject之后,这个Promise

    2.2K70

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

    本系列文章有如下几个章节组成: 图解 Promise 实现原理(一)—— 基础实现 图解 Promise 实现原理(二)—— Promise 链式调用 图解 Promise 实现原理(三)—— Promise...原型方法实现 图解 Promise 实现原理(四)—— Promise 静态方法实现 一、前言 上一节中,实现了 Promise 的基础版本: //极简的实现+链式调用+延迟机制+状态 class Promise...真正的链式 Promise 是指在当前 Promise 达到 fulfilled 状态后,即开始进行下一个 Promise(后邻 Promise)。...那么我们如何衔接当前 Promise 和后邻 Promise 呢?(这是理解 Promise 的难点,我们会通过动画演示这个过程)。...then 函数内部构造了一个新的 Promise实例:Promise-2。立即执行 Promise-1 的 _handle方法。 此时 Promise-1 还是pending的状态。

    1.4K42

    怎么理解JS Promise

    四、Promise与异步 Promise是异步的。js异步操作是通过js的事件循环机制EventLoop实现的。...对于异步任务来说,当其可以被执行时,会被放到一个 任务队列(task queue) 里等待JS引擎去执行。...当执行栈中的所有同步任务完成后,JS引擎才会去任务队列里查看是否有任务存在,并将任务放到执行栈中去执行,执行完了又会去任务队列里查看是否有已经可以执行的任务。...总结起来js引擎对程序的执行顺序是:1。先执行同步任务的程序 2。 在执行异步任务里的微任务 3。所有微任务都执行完了后就执行异步的宏任务,但这里是一个一个宏任务去执行,不是一下子执行完。...after");//同步任务 } testFn(); 上图结果证明了上述所说的js的执行顺序 。

    11.7K30

    JS高阶(一)Promise

    Promise是什么?...抽象表达: Promise是ES6中新增的规范; Promisejs中异步编程的新解决方案(旧方案采用函数回调); 具体表达: 从语法上说:Promise是一个构造函数; 从功能上说:Promise...promise 对象; 说明:返回一个成功/失败的 promise 对象; //创建promise.resolve对象 //如果传入的对象为 非promise对象 则返回的是一个 成功的promise...对象; 说明:只返回一个失败的 promise 对象; //创建promise.resolve对象 //如果传入的对象为 非promise对象 则返回的是一个 成功的promise对象 //如果传入的对象...非promise对象 则参数的结果决定了 resolve的结果 let p = Promise.reject(521); let c = Promise.reject(new Promise(

    2.4K10

    解读Promise原理,手动实现一个Promise

    简单看看 Promise 的历史 1.Promise 在 1980 年代被创建出来 2.在 1988 年正式得名: Promise 3.已经有很多人了解到了 Promise, 但是人们还是坚持使用 node.js...开始使用 Promise 并真正使 Promise 广为人知 6.JQuery 没有实现部分 Promise 的功能, 这也导致了 Promie/A+ 标准的产生 7.ES6 正式引入了 Promise...,并且和已有的实现了 Promise/A 规范的 library 相兼容 实现 Promise 之前, 让我们看看 Promise 有哪些规范 Promise 是一个 thenable 对象, 也就是说...因为是异步调用, 根据 event-loop 的原理, promiseAsyncFunc().then(fulfillCallback, rejectCallback) 传入的 callback 在异步调用结束时一定是已经赋值过了...为此我们需要为 Promise 加一个 value 字段: 第四版 Promise: 保存异步调用的结果 我们为 promise 加入 value 字段,用于保存 Promise 的执行结果。

    85330

    JS 异步系列 —— Promise 札记

    Promise; 要了解其它更为高级的异步操作得先熟悉 Promise; 基于这些目的,实践了一个符合 Promise/A+ 规范的 repromise。...本札记系列总共三篇文章,作为之前的文章 Node.js 异步异闻录 的拆分和矫正。...Promise札记 Generator札记 Async札记 Promise/A+ 核心 在实现一个符合 Promise/A+ 规范的 promise 之前,先了解下 Promise/A+ 核心,想更全面地了解可以阅读...; Promise 的状态一旦转化,将不能被更改; repromise api 食用手册 Promise.resolve() Promise.resolve() 括号内有 4 种情况 /* 跟 Promise...(),Promise.reject() 原封不动地返回参数值 Promise.all(arr) 对于 Promise.all(arr) 来说,在参数数组中所有元素都变为决定态后,然后才返回新的 promise

    1.1K30

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

    更多关于 Promise 的介绍请参考阮一峰老师的 ES6入门 之 Promise 对象。 很多同学在学习 Promise 时,知其然却不知其所以然,对其中的用法理解不了。...本系列文章由浅入深逐步实现 Promise,并结合流程图、实例以及动画进行演示,达到深刻理解 Promise 用法的目的。...本系列文章有如下几个章节组成: 图解 Promise 实现原理(一)—— 基础实现 图解 Promise 实现原理(二)—— Promise 链式调用 图解 Promise 实现原理(三)—— Promise...原型方法实现 图解 Promise 实现原理(四)—— Promise 静态方法实现 一、【前言】 上一节中,实现了 Promise 的链式调用。...二、【错误处理】 之前为了讲解原理,只是实现了 onFulfilled ,对于 Promise 来说,除了成功还有失败,在失败时,要标记 Promise 的状态为 rejected, 并执行注册的 onRejected

    93021

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

    本系列文章有如下几个章节组成: 图解 Promise 实现原理(一)—— 基础实现 图解 Promise 实现原理(二)—— Promise 链式调用 图解 Promise 实现原理(三)—— Promise...原型方法实现 图解 Promise 实现原理(四)—— Promise 静态方法实现 一、前言 上一节中,实现了 Promise 的原型方法。...二、静态方法 1、Promise.resolve && Promise.reject 除了前文中提到的 Promise实例的原型方法外,Promise 还提供了 Promise.resolve 和Promise.reject...Promise.reject 的实现源码 2、Promise.all && Promise.race Promise.all 接收一个 Promise 实例的数组,在所有这些 Promise 的实例都...四、参考资料 【翻译】Promises/A+规范 深入 Promise(一)——Promise 实现详解 30分钟,让你彻底明白Promise原理

    85411

    JSpromise是什么?

    所谓的Promise,简单的来说就是一个可以存放未来才能结束的任务或者事件。 1....Promise实列有三个状态: – pending (进行中) – resolved (成功) – rejected(失败) 当要处理某个任务的时候,promise的状态是pending,任务完成是状态就变成了...3.all() 接受一个数组作为自己的参数,数组中每一项都是一个promise对象,当数组的每一个promise状态时resolved时,all方法的状态才会变成resolved,有一个变成rejected...5finally() 他是不管promise时什么状态都会执行的都会去执行的,他不接受任何的参数。 Promise的优点: – 对象的状态不受外界的影响,只有异步的操作结果才能改变他的状态。...– 一旦状态改变就不会在变,任何时候都可以得到这个结果,就如他的名字一样promise(承诺)。 Promise的缺点: – 无法去取消promise,只要创建就会执行,无法中途去终止。

    3.8K10
    领券