首页 >>  正文

promise.all返回值

来源:baiyundou.net   日期:2024-09-22

1、promise.resolv

 

静态方法 Promise.resolve(value)可以认为是 new Promise方法的语法糖,比如Promise.resolve(42) 可以认为是以下代码的语法糖。

 

new Promise(function (resolve) {

    resolve(42)

})

这个静态方法会让Promise对象立即进入确定(即resolved) 状态,并将42传递给后面 then 里所指定的 onFulfilled函数。

 

2、promise.reject

 

Promise.reject(error)是和Promise.resolve(value)类似的静态方法,是 new Promise 方法的快捷方式。比如 Promise.reject(new Error("Promise reject error")) 就是下面代码的语法糖形式

 

new Promise(function (reject) {

    reject(new Error("Promise reject error"))

})

它的功能是调用该 Promise对象通过then指定的 onRejected函数,并讲错误(Error)对象传递给这个onRejected函数

 

3、promise.then

 

Promise.then(onFulfilled, onRejected)

① 函调函数异步执行

Promise/A+规范统一规定:Promise 只能使用异步调用方式

② 返回值

Promis.then不仅仅是注册一个回调函数那么简单,它还会将回调函数的返回值进行变换,创建并返回一个Promise 对象。正是 then函数中有了这样返回值的机制,才能使得在整个Promise链式结构当中,每个then方法都能给 下一个then方法传递参数

③ promise穿透

 

4、promise.catch

 

① 语法糖的本质

Promise.catch只是promise.then(undefined, onRejected) 方法的一个别名而已。也就是说,这个方法用来注册当Promise对象状态变为 Rejected时 的回调函数

第一种写法

Promise.resolve()

  .then((data) => console.log(data))

  .then(undefined, (err) => console.log(err));

 

第二种写法

Promise.resolve()

  .then((data) => console.log(data))

  .catch((err) => console.log(err));

 

② 只有一个主人

整个Promise链中,catch只属于异步触发它当中回调函数 执行的那个Promise,并不属于所有 Promise

 

5、promise.finally

 

promise.finally方法的回调函数不接受任何参数,这意味着finally没有办法 知道,前面的Promise状态到底是fulfilled还是rejected 。这表明,finally方法里面的操作,应该是与Promise状态无关的,不依赖于 Promise的执行结果。

 

6、promise.all

 

Promise.all接受一个promise对象的数组作为参数,当这个数组里的所有 Promise 对象 全部变为resolve或者reject状态的时候,它才会去调用.then方法。

传递给Promise.all的 promise并不是一个个的顺序执行的,而是同时开始、并行执行的。

 

7、promise.allSettled

 

Promise.allSettled()的入参和Promise.all、Promise.race一样,接受一个promise 对象的数组作为参数,也是同时开始、并行执行的。但是Promise.allSettled的返回值需要注意以下几点:

Promise.allSettled不会走进catch,当所有输入Promise都被履行或者拒绝时, statusesPromise 会解析一个具有具体完成状态的数组

Promise.allSettled()在你需要执行平行和独立的异步操作并收集所有结果时非常有效, 即使某些异步操作可能失败。

 

8、promise.race

 

Promise.rece()的使用方法和 Promise.all一样,接收一个promise 对象的数组为参数,Promise.race是要有一个promise对象进入Fulfilled或者 Rejected状态的话,就会继续进行后面的处理。这里依旧有两个点要注意:

和Promise.all一样是所有数组当中的Promise同时并行的

Promise.race 在第一个Promise对象变为Fulfilled之后,并不会 取消其他promise对象的执行。

Promise.race接受的是一个Promise对象数组,但是返回的确实最先完成Fulfilled 或者最先被Rejected的一个Promise的结果

 

9、promise.any

 

Promise.any的入参和Promise.all、Promise.race、Promise.allSettled一样, 接收一个promise对象的数组作为参数。

","gnid":"99b672bdcf4f63a0d","img_data":[{"flag":2,"img":[{"desc":"","height":518,"title":"","url":"https://p0.ssl.img.360kuai.com/t012ec4533850b75233.jpg","width":877}]}],"original":0,"pat":"art_src_0,fts0,sts0","powerby":"cache","pub_time":1710231954000,"pure":"","rawurl":"http://zm.news.so.com/edc050804c5eaf5ea2fbedd7a1e03938","redirect":0,"rptid":"cbd9272e7816c465","rss_ext":[],"s":"t","src":"HOOBOO青柠","tag":[],"title":"Promise的九大方法

喻钥国4820angular返回的promise数据类型怎么处理 -
咎心便13172193192 ______ 1. 这是Angular1...不是ng22. JSON转Object 用 JSON.parse,不要用eval3. 这跟Promise没什么关系,你应该研究下什么是异步编程,JS的所有AJAX行为,在不受特别约束下,都是异步的.const fs = require('fs') fs.readFile('hello.txt', 'utf-8', (err, ...

喻钥国4820angular 怎么把promise对象改为同步的 -
咎心便13172193192 ______ 这篇文章主要介绍了Angular中的Promise对象($q介绍),本文讲解了Promise模式、Q Promise的基本用法、AngularJs中的$q.defferd等内容,需要的朋友可以参考下 在用JQuery的时候就知道 promise 是 Js异步编程模式的一种模式,但是不是...

喻钥国4820如何在angularjs执行多个异步操作后再执行 -
咎心便13172193192 ______ 使用ng自带的$q服务let promises = { alpha: promiseAlpha(), beta: promiseBeta(), gamma: promiseGamma() }$q.all(promises).then((values) => { console.log(values.alpha); // value alpha console.log(values.beta); // value beta console.log(values....

喻钥国4820如何用Q循环调用返回promise -
咎心便13172193192 ______ 我有一个事件处理流,传进来的参数有可能是url数组或者是一个url.如何在参数是一个数组的情况下,循环调用事件处理流的下一步?function foo(url) { var deferred = Q.defer(); if( Array.isArray(url)) { url.forEach(function(u) { //无效,无法进入boo deferred.resolve(u); }); } else { //有效能够进入boo deferred.resolve(url); } return deferred.promise; } function boo(s) { console.log('in boo'); }

喻钥国4820“promise”怎么造句? -
咎心便13172193192 ______ “promise”造句如下: She broke her promise to me. 她没有承担对我的许诺. The future holds limitless promise. 未来有着无限的希望. You can't swallow the promise of financial allocation that you made yesterday. 你不能取消你昨天作出的财政...

喻钥国4820javascript的Promise和回调有什么区别 -
咎心便13172193192 ______ 语言层级上的没什么区别,promise本质上还是回调,只是写法变成链式

喻钥国4820js中promise到底怎么用 -
咎心便13172193192 ______ 我举个生活中的例子吧,比如说你去麦当劳买吃的,你下订单后,会给你一个小纸条,这个小纸条相当于你和麦当劳之间的约定,这个小纸条也可以理解为你所定的餐的一个占位符.等麦当劳饭做好了的时候,会吧饭送到你面前,并且把小纸条收走. 这个如果在代码中的话,就意味着,你在执行代码的时候,可能会在未来某个时刻才会取到值(异步),等在值取到以后,会进行一些相应的处理,比如说ajax,这实际上就是promise的一个典型的应用场景. 我刚刚只是说了promise的一个大的应用场景,我觉得只要能把握住这个,具体的API就可以了. 假如你想对它的使用有一个更深入的了解的话,我还可以推荐你一个小文章: Javascript基础之-Promise 加油

喻钥国4820permit、allow、promise的区别 -
咎心便13172193192 ______ 1、promise,表示承诺,这里是表示她承诺,所以不能用另外两个. 2、allow,表示允许,allow sb to do sth,固定搭配. 3、permit,也是允许,但是更加正式,体现出一种强烈的主观色彩.

喻钥国4820javascript库有哪些支持promise规范 -
咎心便13172193192 ______ 许多的语言,为了将异步模式处理得更像平常的顺序,都包含一种有趣的方案库,它们被称之为promises,deferreds,或者futures.JavaScript的promises ,可以促进关注点分离,以代替紧密耦合的接口. 本文讲的是基于Promises/A 标准的...

喻钥国4820js promise 中的then的值能直接返回出来吗 -
咎心便13172193192 ______ then方法的实现里,确实是返回了一个新的Promise,你说的double,其实是then的第一个参数onFulfilled. this.then = function (onFulfilled, onRejected) { var self = this; return new Promise(function (resolve, reject) { return self.done(function (result) ...

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024