如何 return 来自 async.js 系列的结果
How to return results from async.js series
我看到的 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 结果。但是,你究竟是如何return的结果。每次我尝试它都会返回未定义的状态。
我需要这样的东西:
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 上,return 通过他们的 context.succeed(results) 调用得到结果。但是,我永远得不到结果。我显然对这个过程有些不了解,如果有人可以提供帮助,将不胜感激,谢谢!
您不能 return 异步调用的结果。您可以做的是传递回调函数,当结果可用时,以结果作为参数调用该回调函数。
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);
}
})
为异步系列模块试试这个
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;
}
});
}
我看到的 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 结果。但是,你究竟是如何return的结果。每次我尝试它都会返回未定义的状态。
我需要这样的东西:
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 上,return 通过他们的 context.succeed(results) 调用得到结果。但是,我永远得不到结果。我显然对这个过程有些不了解,如果有人可以提供帮助,将不胜感激,谢谢!
您不能 return 异步调用的结果。您可以做的是传递回调函数,当结果可用时,以结果作为参数调用该回调函数。
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);
}
})
为异步系列模块试试这个
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;
}
});
}