如何阅读蓝鸟的承诺结构?
How to read Bluebirds' promise structure?
我开始使用 Bluebird,我发现它改变了 promise 的结构。
现在所有内容都带有下划线,因此它是私有的 (?),那么什么表明承诺是已履行、已失败还是待处理?
与原结构对比:
让我们有 3 个承诺 - 2 个已解决,1 个处于拒绝状态,并将它们与另一个承诺混合 - 超时将在 1 秒后被拒绝。
Promise.race
returns 承诺一旦给定数组中的承诺之一解决或拒绝。
const Promise = require("bluebird");
let p1 = Promise.resolve('first')
let p2 = new Promise((resolve) => {
setTimeout(resolve, 1e8)
})
let p3 = Promise.resolve('third')
Promise.race([
Promise.all([p1, p2, p3]).then(() => console.log('ok')),
new Promise((resolve, reject) => setTimeout(reject, 1e3)) // rejected after 1000 ms
])
.catch(() => console.log(`Promise p2 is in pending state: ${p2.isPending()}`))
.catch()
将记录 Promise p2 is in pending state: true
我开始使用 Bluebird,我发现它改变了 promise 的结构。
现在所有内容都带有下划线,因此它是私有的 (?),那么什么表明承诺是已履行、已失败还是待处理?
与原结构对比:
让我们有 3 个承诺 - 2 个已解决,1 个处于拒绝状态,并将它们与另一个承诺混合 - 超时将在 1 秒后被拒绝。
Promise.race
returns 承诺一旦给定数组中的承诺之一解决或拒绝。
const Promise = require("bluebird");
let p1 = Promise.resolve('first')
let p2 = new Promise((resolve) => {
setTimeout(resolve, 1e8)
})
let p3 = Promise.resolve('third')
Promise.race([
Promise.all([p1, p2, p3]).then(() => console.log('ok')),
new Promise((resolve, reject) => setTimeout(reject, 1e3)) // rejected after 1000 ms
])
.catch(() => console.log(`Promise p2 is in pending state: ${p2.isPending()}`))
.catch()
将记录 Promise p2 is in pending state: true