我有三个函数(A,B,C),每个函数都返回一个promise。承诺链不需要先前承诺的任何信息,除非它们完成。
B必须等待A完成,C必须等待B完成。
目前我有:
return A(thing)
.then(function () {
return B(anotherThing);
})
.then(function () {
return C(somethingElse);
});
这感觉就像我浪费了很多空间(实际代码只有3行,只有7行)。
答案 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));