javascript - 异步回调函数返回结果

标签 javascript function asynchronous return-value asynccallback

我在 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/

相关文章:

javascript - 使用 .filter() 时出现 firebug 空错误

c++ - Quick Q - 无法将函数的输出写入文件

c++ - 使用 BOOST ASIO 在异步服务器中发送局部变量

javascript - Angular promise 不起作用

javascript - 动态地从 jquery ui 自定义弹出框中的文本区域获取输入,以用于 highcharts 中的工具提示

javascript - 需要将 JSON 对象转换为 Highcharts 的 JSON 数组

javascript - 如何检索所有 jQuery 多选值

javascript - bluebird 是否具有用于在 promises 中包装函数的说服函数?

linux - bash: cd: 没有那个文件或目录

node.js - 异步每个都会引入延迟