-
promise主要是用于解决异步操作,promise有三个状态,等待、成功、失败,状态一旦改变就不能在修改。promise实际上是一个构造函数,具有all,reject,resolve等方法,原型上有then,catch等方法。构造函数本身是同步执行的,promise.then()这些异步执行的。
-
Promise构造函数的静态方法
let fn = function(a){ return new Promise((resolve, reject) => { if(a > 5){ resolve('大于5') } else { reject('小于等于5') } }) } let f1 = fn(8) let f2 = fn(4) let f3 = fn(6) let f4 = fn(5) /* * 接收一个 promie 对象的集合,返回一个新的 promise 对象 **/ // 有一个错误或者全部成功执行结束 Promise.all([f1, f2, f3, f4]).then(res => { console.log(res) }).catch(err => { console.log(err) // 小于等于5 }) Promise.all([f1, f3]).then(res => { console.log(res) }).catch(err => { console.log(err) // ['大于5', '大于5'] }) // 只要一个成功或者全部错误执行结束 Promise.any([f1, f2, f3, f4]).then(res => { console.log(res) // 大于5 }).catch(err => { console.log(err) }) Promise.any([f2, f4]).then(res => { console.log(res) }).catch(err => { console.log(err) // AggregateError: All promises were rejected }) // 不管对错全部执行完毕 返回数组 里面有各个对象对应的执行后状态 Promise.allSettled([f1, f4]).then(res => { console.log(res) // [ {status: 'fulfilled', value: '大于5'},{status: 'rejected', reason: '小于等于5'}] }).catch(err => { console.log(err) }) // 不管对错有一个执行完毕 Promise.race([f1, f4]).then(res => { console.log(res) // 大于5 }).catch(err => { console.log(err) }) Promise.race([f2, f4]).then(res => { console.log(res) // 小于等于5 }).catch(err => { console.log(err) })
-
promise的静态方法使用
于 2023-01-30 17:23:52 首次发布