KinoOfficial / ES6-course

0 stars 0 forks source link

Promise #4

Open KinoOfficial opened 1 year ago

KinoOfficial commented 1 year ago

Promise 是异步(async)编程的一种解决方案

Promise有三种状态

  1. pending: 初始状态,既不是成功,也不是失败状态。
  2. fulfilled: 意味着操作成功完成。
  3. rejected: 意味着操作失败。
KinoOfficial commented 1 year ago

let promise = new Promise(function(resolve, reject) { // … 异步操作的代码 if (/ 异步操作成功 /) { resolve(value); } else { reject(error); } });

KinoOfficial commented 1 year ago

Promise.all const p = Promise.all([p1, p2, p3]); 只有p1、p2、p3的状态都变成fulfilled,p的状态才会变成fulfilled,此时p1、p2、p3的返回值组 成一个数 组,传递给p的回调函数。

let p1 = new Promise((resolve, reject) => { resolve('成功了') }) let p2 = new Promise((resolve, reject) => { resolve('success') }) let p3 = Promise.reject('失败') Promise.all([p1, p2]).then((result) => { console.log(result) //['成功了', 'success'] }).catch((error) => { console.log(error) }) Promise.all([p1,p3,p2]).then((result) => { console.log(result) }).catch((error) => { console.log(error) // 失败了,打出 '失败' })

KinoOfficial commented 1 year ago

Promise.race const p = Promise.race([p1, p2, p3]); 只要p1、p2、p3之中有一个实例率先改变状态,p的状态就跟着改变。那个率先改变的 Promise 实例 的返回值,就传递给p的回调函数。

KinoOfficial commented 1 month ago
image image