我在 stackoverflow 上看到了很多关于在回调函数中获取异步调用的返回值的帖子,但我想知道是否可以在不深入回调函数的情况下获得结果。
例如: 当前情况:
myFunc(arg1,arg2, mycallback);
..
function mycallback(values)
{
//Process values
alert(values);
}
我想要什么:
var returnedValues = myFunc(arg1,arg2, function mycallback(values)
{
return values;
});
// Now I would to use the returnedValues here...
以上场景可能吗?请告诉我。
干杯。
最佳答案
你不能这样做,你可以做的是利用Promises
引用:...我无需在回调中进行过多操作即可获得结果。
如果您担心 callback hell ,您可以通过使用 Promise 来缓解这种情况:
示例来自bluebird library :
你应该使用 promise 来改变这个:
fs.readFile("file.json", function(err, val) {
if( err ) {
console.error("unable to read file");
}
else {
try {
val = JSON.parse(val);
console.log(val.success);
}
catch( e ) {
console.error("invalid json in file");
}
}
});
Into this:
fs.readFileAsync("file.json").then(JSON.parse).then(function(val) {
console.log(val.success);
})
.catch(SyntaxError, function(e) {
console.error("invalid json in file");
})
.catch(function(e) {
console.error("unable to read file")
});
关于javascript - 异步回调函数返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31094791/