如何从async.js系列返回结果

我看到的每个async.js例子都是这样的:

var async = require(“async”); async.series([ function(callback) { setTimeout(function() { console.log(“Task 1”); callback(null, 1); }, 300); }, function(callback) { setTimeout(function() { console.log(“Task 2”); callback(null, 2); }, 200); }, function(callback) { setTimeout(function() { console.log(“Task 3“); callback(null, 3); }, 100); } ], function(error, results) { console.log(results); }); 

最后,他们总是只是console.log结果。 但是,你怎么实际返回结果。 每次我尝试它只是回到未定义。

我需要这样的东西:

 var async = require('async'); var handler = function() { async.series([ function(callback) { setTimeout(function() { console.log('Task 1'); callback(null, 1); }, 300); }, function(callback) { setTimeout(function() { console.log('Task 2'); callback(null, 2); }, 200); }, function(callback) { setTimeout(function() { console.log('Task 3'); callback(null, 3); }, 100); } ], function(error, results) { return results; }); } var result = handler(); console.log(result); 

但是这不起作用,结果总是未定义的。

最终,我需要将其放在AWS Lambda上,并使用context.succeed(results)调用返回结果。 但是,我永远无法得到结果。 我显然不理解这个过程,如果有人能帮助它,将不胜感激,谢谢!

您不能从asynchronous调用返回结果。 你可以做的是传递callback函数,当结果可用时,调用该callback函数,结果作为参数。

 var async = require('async'); var handler = function(cb) { async.series([ function(callback) { setTimeout(function() { console.log('Task 1'); callback(null, 1); }, 300); }, function(callback) { setTimeout(function() { console.log('Task 2'); callback(null, 2); }, 200); }, function(callback) { setTimeout(function() { console.log('Task 3'); callback(null, 3); }, 100); } ], function(error, results) { cb(error, results) }); } handler(function(err, results) { if(!err) { console.log(results); } }) 

尝试这个asynchronous系列模块

 Details: function (req, res) { async.series([ function functionOne(callback) { setTimeout(function(err, response) { console.log('Task 1'); callback(null, 1); if (err) { return callback(err); } }, 300); }, function functionTwo(callback) { setTimeout(function(err, response) { console.log('Task 2'); callback(null, 2); if (err) { return callback(err); } }, 200); }, function functionThree(callback) { setTimeout(function(err, response) { console.log('Task 3'); callback(null, 3); if (err) { return callback(err); } }, 200); } ], function (err,res) { if (err) { return res.badRequest(err); } if (res) { return response; } }); }