从生成器函数返回promise
Return a promise from a generator function?
我目前有一个promiseized函数(它向调用它的另一个函数返回promise),它的逻辑如下:
function( param1,param2 ){
if( condition1 ){
return function1();
}
if( condition2 ){
return function2().then(
() => {
// blah blah
return promsie;
}
)
}
}
CCD_ 1和CCD_。然而,有时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();
}
co
返回promise联合文档
co(function*(){
var myValue;
if( condition1 ){
myValue = yield function1();
}
else if( condition2 ){
myValue = yield function2();
}
return myValue;
})
.then(function(value){
console.log(value); // will output myValue
})
.catch(...);
因此,如果你想修改你的功能,你可以做以下
function myFunc(param1,param2){
return co(function*(){
var myValue;
if( condition1 ){
myValue = yield function1();
}
else if( condition2 ){
myValue = yield function2();
}
return myValue;
});
}
这样你就可以在其他地方使用
myFunc(param1,param2)
.then(function(value) {
console.log(value); // will output myValue
});
相关文章:
- 在promise完成后,依次运行返回promise的函数
- 等待's返回Promise而不是value
- 当数组中的某个函数没有返回promise时,我可以使用$q.all吗
- 可以为云端点打开.client.load返回promise
- 使用从内部函数返回的异步数据对外部函数返回promise
- 在Angular服务中使用$http时,为什么要返回promise和数据
- 从自定义函数返回promise
- Leadfoot会话对象返回promise
- For循环以错误的顺序返回promise
- 返回promise而不是jquery ajax调用
- 当异步验证器在AngularJS中返回promise时提交表单
- 函数返回Promise,检查错误
- 在jQuery中返回promise()或deferred有什么区别
- 在 JavaScript 中,当 'parent()' 返回 Promise 时,如何实现递归的 'ancestors(
- Angular$q返回promise两次$http服务调用
- 对返回promise的函数使用.success时,Undefined不是函数
- 返回promise的链接函数;刷新超时后无法解析
- Angular Service在返回promise时抛出异常
- 模拟服务返回promise:无法读取未定义的属性
- 这个JavaScript函数需要返回Promise吗