Javascript异步并行-如何返回最终结果/回调?

Javascript异步并行-如何返回最终结果/回调?,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,如何将最终结果/回调返回给调用函数? 文档中的所有示例仅显示console.log()选项 以下代码仅用于示例目的 function foo(input) { async.parallel([ function(callback) { callback(null, input.one); }, function(callback) { callback(null, input.two);

如何将最终结果/回调返回给调用函数? 文档中的所有示例仅显示console.log()选项

以下代码仅用于示例目的

function foo(input) {
    async.parallel([
        function(callback) {
            callback(null, input.one);
        },
        function(callback) {
            callback(null, input.two);
        }
    ],
    function(err, results) {
        // What to do here? all examples include console.log()
        // I want to return the result ([1, 2]) to the calling function!
    });
}

var data = {"one": 1, "two": 2};
var bar = foo(data);

console.log(bar); // Will return [1, 2]

编辑:此问题被标记为重复。另一篇文章没有向那些对javascript和回调没有多少经验的人解释这是如何做到的

如果您的函数包含异步代码,那么它将成为异步函数。您需要包括一个回调:

    function foo(input, cb) {

       async.parallel([
          function(callback) {
              callback(null, input.one);
          },
          function(callback) {
            callback(null, input.two);
          }
      ],
      function(err, results) {
       return cb(results);
      });
   }
并修改您的呼叫:

var data = {"one": 1, "two": 2};
foo(data, function(bar){
  console.log(bar);

});

将回调添加到您的
foo
函数中,并使用最后的
async
回调的结果调用它。如果您的两个函数实际上不是异步的,为什么要使用
async
?@alexmac您可以发布答案吗?我仍在努力思考回调:|@bergi这只是一个例子。我正在努力学习:)不要忽视错误!直接使用
async.parallel([…],cb)
。@DanielBjørnådal
return
语句不需要。