我現在有一個promisified函數(即返回一個承諾,調用它的另一個函數)具有一定的邏輯是這樣的:從發電機功能返回承諾?
function(param1,param2){
if(condition1){
return function1();
}
if(condition2){
return function2().then(
() => {
// blah blah
return promsie;
}
)
}
}
function1()
和function2()
都是promisified功能。但是,有時候鏈會變得複雜。我很想搬到發電機。
這是正確的方式移植到發電機不破壞外功能,只是需要一個承諾,但確實與它無關:
function(param1,param2){
co(function*(){
if(condition1){
let result = yield function1();
this.return(result);
}
if(condition2){
let result = yield function2();
this.return(result)
}
});
return Q();
}
什麼是'this.return()'?你從哪裏得到Q()? – Bergi
@Bergi這是[this.return](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/return),'Q'是npm'q'模塊。排除要求簡潔。 –
但是......'this'不是一個生成器,你不能從運行的生成器中調用'.return',但只能從外部調用,你應該只使用'return'語句?另外'Q()'只是一個空的承諾,立即滿足'undefined',而不是等待任何東西? – Bergi