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

JS 手写: Promise

# Promise 链式调用 我们可以用 promise.then(),promise.catch() 和 promise.finally() 这些方法将进一步操作与一个变为已敲定状态 promise...这个新 promise 对象在触发成功状态以后,会把一个包含 iterable 里所有 promise 返回值数组作为成功回调返回值,顺序跟 iterable 顺序保持一致;如果这个新 promise...# Promise.any(iterable) (opens new window) 接收一个 Promise 对象集合,当其中一个 promise 成功,就返回那个成功 promise 值。...promise 失败,那么 Promise.all 返回 promise 对象失败 在任何情况下,Promise.all 返回 promise 完成状态结果都是一个数组 Promise.all...promise 本身状态,会返回所有 promise 结果。

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

    怎么理解JS Promise

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

    11.7K30

    JS高阶(一)Promise

    抽象表达: Promise是ES6中新增规范; Promisejs中异步编程新解决方案(旧方案采用函数回调); 具体表达: 从语法上说:Promise是一个构造函数; 从功能上说:Promise...promise 对象; 说明:返回一个成功/失败 promise 对象; //创建promise.resolve对象 //如果传入对象为 非promise对象 则返回是一个 成功promise...对象; 说明:只返回一个失败 promise 对象; //创建promise.resolve对象 //如果传入对象为 非promise对象 则返回是一个 成功promise对象 //如果传入对象...简单表达:由then指定回调函数执行结果决定; 详细表达: 如果抛出异常,新 promise 变为 rejected,reason 为抛出异常; 如果返回任意非 promise 值,新 promise...变为resolved,value 为返回值; 如果返回另一个新 promise,此 promise 结果就会成为新 promise 结果; let p = new Promise((resolve

    2.4K10

    JSCallback VS Promise

    PromiseJS对象,它们用于表示一个异步操作最终完成 (或失败), 及其结果值.查看MDN 您可以通过使用回调方法或使用Promise执行异步操作来获得结果。但是两者之间有一些细微差异。...对象 它们是JS中构成Promise核心部分。...所以,我们为什么需要JSPromise? 为了明白这个问题,我们得先来聊聊为什么在大多数JS开发者中,仅仅使用CallBack方法是远远不够。...方法 JSPromise构造函数定义了几种静态方法,可用于从Promise中检查一个或者多个结果 Promise.all 当你想要累计一批异步操作并最终将它们每一个值作为一个数组来接收时,满足此目标的...每当可迭代Promise一个Promise以该Promise值或原因解析或拒绝时,此方法都会返回一个履行或拒绝Promise

    5.3K21

    JSpromise是什么?

    Promise是异步编程一中解决方案,最早是由社区提出,es6中正式将其纳入,他是一个对象,可以获取到异步操作,他相比传统回调函数,更加强大和合理,避免了回调地狱。...所谓Promise,简单来说就是一个可以存放未来才能结束任务或者事件。 1....3.all() 接受一个数组作为自己参数,数组中每一项都是一个promise对象,当数组每一个promise状态时resolved时,all方法状态才会变成resolved,有一个变成rejected...5finally() 他是不管promise时什么状态都会执行都会去执行,他不接受任何参数。 Promise优点: – 对象状态不受外界影响,只有异步操作结果才能改变他状态。...– 一旦状态改变就不会在变,任何时候都可以得到这个结果,就如他名字一样promise(承诺)。 Promise缺点: – 无法去取消promise,只要创建就会执行,无法中途去终止。

    3.8K10

    JS 异步系列 —— Promise 札记

    Promise 研究 Promise 动机大体有以下几点: 对其 api 不熟悉以及对实现机制好奇; 很多库(比如 fetch)是基于 Promise 封装,那么要了解这些库前置条件得先熟悉...Promise; 要了解其它更为高级异步操作得先熟悉 Promise; 基于这些目的,实践了一个符合 Promise/A+ 规范 repromise。...本札记系列总共三篇文章,作为之前文章 Node.js 异步异闻录 拆分和矫正。...Promise/A+规范 Promise 操作只会处在 3 种状态一种:未完成态(pending)、完成态(resolved) 和失败态(rejected); Promise 状态只会出现从未完成态向完成态或失败态转化...return promise } 坑点 2:this 指向问题 this.callbackArr.push() 中 this 指向是 ‘上一个’ promise,所以类 CallbackItem

    1.1K30

    JSPromise理解与应用

    中并没有关于这种状态回调函数,那么 then 将创建一个没有经过回调函数处理Promise 对象,这个新 Promise 只是简单地接受调用这个 then Promise 终态作为它终态...4、返回一个已经是接受状态 Promise,那么 then 返回 Promise 也会成为接受状态,并且将那个 Promise 接受状态回调函数参数值作为该被返回Promise接受状态回调函数参数值...5、返回一个已经是拒绝状态 Promise,那么 then 返回 Promise 也会成为拒绝状态,并且将那个 Promise 拒绝状态回调函数参数值作为该被返回Promise拒绝状态回调函数参数值...6、返回一个未定状态(pending) Promise,那么 then 返回 Promise 状态也是未定,并且它终态与那个 Promise 终态相同;同时,它变为终态时调用回调函数参数与那个...Promise 变为终态时回调函数参数是相同

    1.2K20
    领券