如何阅读蓝鸟的承诺结构?

时间:2017-04-06 07:54:16

标签: promise bluebird

我开始使用Bluebird,我发现它改变了承诺的结构。

现在所有东西都带有下划线,所以它是私有的(?),那么是什么表明承诺是履行还是失败或未决?

is deprecated

与原始结构形成对比:

enter image description here

1 个答案:

答案 0 :(得分:1)

让我们有3个承诺 - 2个已解决,1个处于拒绝状态,并将它们彼此混合使用 - 超时将在1秒后被拒绝。

Promise.race会在给定数组中的某个承诺解析或拒绝后立即返回promise。

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