Daz*_*sed 3 javascript asynchronous promise
我开始自学JavaScript,并且无法从promise中的函数返回。我的代码本质上看起来像这样:
foobar = function(x,y){
//code that doesn't matter
return promiseFunction(
function(results){
console.log("promise completed")
console.log(output)
return output;}
function(err){throw error;});
console.log(foobar('1','2'));
Run Code Online (Sandbox Code Playgroud)
此打印
undefined
promise completed
what I want the result to be
Run Code Online (Sandbox Code Playgroud)
我是异步编程的新手,不确定自己在做什么错。
异步函数不返回(或者至少不可靠)。当您从异步函数中获得一个值时,console.log它已经运行了它所拥有的(在这种情况下,什么都没有,或者undefined)。这是我刚开始学习时刻苦学习的一课。如果您希望在异步函数之后发生某些事情,则必须在异步函数内部调用它。
请参阅线程如何从 AJAX 调用返回响应?了解更多信息和建议。
你没有return承诺。您在完成另一个任务后将其链接起来-重新获得完成该链接任务的新承诺:
function foobar(x,y){
// Assuming that promiseFunction does return a promise
return promiseFunction().then(function(results){
console.log("promise completed")
console.log(output)
return output;
}, function(err) {
throw error;
});
}
foobar('1','2').then(function(output) {
console.log(output);
})
Run Code Online (Sandbox Code Playgroud)
如果promiseFunction尚未返回承诺,请查看文档的此部分,以Q了解如何为一些示例和模式构造承诺。
| 归档时间: |
|
| 查看次数: |
2236 次 |
| 最近记录: |