西安网站建设| 西安网站制作| 西安做网站| 宏博网络-专注于网站网页设计开发十余年

观点 让价值共享,记录企业发展脚步,感恩相伴

关于高端网站建设Promise的九大方法

推荐文章

关于高端网站建设Promise的九大方法

1a454d395b3a9c512a1bcb1221943dce.jpeg

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

36005b6637735cc145f51b8f6d2c335b.jpeg

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对象的数组作为参数。


以上,便是我们西安宏博网络技术专员总结的,关于高端网站建设Promise的九大方法,若是有什么不明白的,也可以咨询我们。


点击选择您需要的帮助
  • 我想获取解决方案
  • 我想咨询网站建设/改版相关服务
  • 我想咨询互联网营销相关服务
  • 我想咨询微信公众号托管相关服务
  • 我想咨询小程序/APP制作相关服务
  • 我想咨询网站托管相关服务
  • 我想售后服务
  • 我想投诉或建议