是否有更清洁的方式来链接这些蓝鸟的承诺?

时间:2015-07-18 05:59:42

标签: javascript node.js refactoring promise bluebird

我有三个函数(A,B,C),每个函数都返回一个promise。承诺链不需要先前承诺的任何信息,除非它们完成。

B必须等待A完成,C必须等待B完成。

目前我有:

return A(thing)
.then(function () {
  return B(anotherThing);
})
.then(function () {
  return C(somethingElse);
});

这感觉就像我浪费了很多空间(实际代码只有3行,只有7行)。

1 个答案:

答案 0 :(得分:3)

works

return A(thing)
    .then(B.bind(null,anotherThing))
    .then(C.bind(null,somethingElse));

注意:IE8或更早版本无法使用bind - 但是有一个polyfill - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

有关信息 - 在ES2015中你可以做 - iojs会让你启用箭头功能,但它们显然会以某种方式被打破

return A(thing)
    .then(() => B(anotherThing))
    .then(() => C(somethingElse));