Я в настоящее время promisified функции (которая возвращает обещание другой функции, которая вызывает его), что есть какая-то логика, которая звучит так:Возвратите обещание от функции генератора?
function(param1,param2){
if(condition1){
return function1();
}
if(condition2){
return function2().then(
() => {
// blah blah
return promsie;
}
)
}
}
function1()
и function2()
являются оба promisified функции. Однако иногда цепь then
осложняется. Мне бы хотелось перейти к генераторам.
Это правильный путь к порту на генераторы, не нарушая внешнюю функцию, которая просто ожидает обещания, но ничего не делает с ним:
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