首页
学习
活动
专区
工具
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
您找到你想要的搜索结果了吗?
是的
没有找到

JSCallback VS Promise

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

4.9K21

JS高阶(一)Promise

抽象表达: Promise是ES6中新增规范; Promisejs中异步编程新解决方案(旧方案采用函数回调); 具体表达: 从语法上说:Promise是一个构造函数; 从功能上说:Promise...解决回调地狱问题 回调地狱:回调函数嵌套调用,外部回调函数异步执行结果是嵌套回调执行条件; 回调地域缺点:不便于阅读,不便于异常处理; 解决方案:promise链式调用; 5.2.1 对象状态改变...promise 对象; 说明:返回一个成功/失败 promise 对象; //创建promise.resolve对象 //如果传入对象为 非promise对象 则返回是一个 成功promise...对象; 说明:只返回一个失败 promise 对象; //创建promise.resolve对象 //如果传入对象为 非promise对象 则返回是一个 成功promise对象 //如果传入对象...变为resolved,value 为返回值; 如果返回另一个新 promise,此 promise 结果就会成为新 promise 结果; let p = new Promise((resolve

2.4K10

怎么理解JS Promise

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

11.6K30

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是什么?

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

3.7K10

JS异步执行,Promise用法

Promise Promise 是异步编程一种解决方案,比传统解决方案——回调函数和事件——更合理且更强大。...1与4顺序不必再说,而2与3先输出Promisethen,而后输出定时器任务。...async函数对 Generator 函数改进,async 函数必定返回 Promise,我们把所有返回 Promise 函数都可以认为是异步函数。...特点体现在以下四点: 内置执行器 更好语义 更广适用性 返回值是 Promise await   顾名思义,等待。正常情况下,await命令后面是一个 Promise 对象,返回该对象结果。...在该函数中,利用await来等待一个PromisePromise缺点 优点 缺点 解决回调 无法监测进行状态 链式调用 新建立即执行且无法取消 减少嵌套 内部错误无法抛出

5.3K30

JS:你真的会用 Promise 吗?

Promise 是一个对象,用于表示一个异步操作最终状态(完成或失败),以及该异步操作结果值。 Promise 是一个代理(代理一个值),被代理值在Promise对象创建时可能是未知。...即:async 函数在 await 之前代码都是同步执行,可以理解为await之前代码属于new Promise时传入代码,await之后所有代码都是在Promise.then中回调; 2.6...如何保证自己实现 Promise 符合规范? 用官方Promise规范测试集,测试自己实现。...RookiePromise 编码小结 RookiePromise结构是按照Promise/A+规范中对then、resolve接口描述组织;优点是编码过程直观,缺点是innerResolve函数篇幅太长...执行测试 npx promises-aplus-testsRookiePromiseTestAdapter.js > log.txt ?

2.6K30
领券