在Node.js中同步处理方法
我继承了一些Node.js代码,需要添加一些功能。然而,由于节点的异步性质,我不确定如何在语法上实现我的目标。目前,我有一个定义如下的函数:在Node.js中同步处理方法,node.js,async.js,Node.js,Async.js,我继承了一些Node.js代码,需要添加一些功能。然而,由于节点的异步性质,我不确定如何在语法上实现我的目标。目前,我有一个定义如下的函数: return { myEntryPoint: function(req, res) { var results = getResults(); res.send(200, results); } }; var getResults = function() { var results = []; async.series(
return {
myEntryPoint: function(req, res) {
var results = getResults();
res.send(200, results);
}
};
var getResults = function() {
var results = [];
async.series([
function(callback) {
// add to results
},
function(callback) {
// add to results
}
]);
return results;
};
已有多个部件正在调用此函数。在其中,我调用了一个名为getResults的函数,其定义如下:
return {
myEntryPoint: function(req, res) {
var results = getResults();
res.send(200, results);
}
};
var getResults = function() {
var results = [];
async.series([
function(callback) {
// add to results
},
function(callback) {
// add to results
}
]);
return results;
};
我的问题是,在返回结果之前,我需要等待async.series调用中的所有函数完成。如何执行此操作?您可以将其更改为添加回调。在中完成所有函数后,将运行可选回调
var getResults = function(finished) {
var results = [];
async.series([
function(callback) {
// add to results
},
function(callback) {
// add to results
}
], function() {
//Called when series is finished
finished(results);
});
};
为了得到结果
return {
myEntryPoint: function(req, res) {
getResults(function(results) {
res.send(200, results);
});
}
};
处理此问题的通常方法是使用有问题的参数进行回调
results = getResults(args);
someFunction(results);
相当于
function getResults(args, callback) {
var results;
//do stuff and populate results.
callback(results);
}
getResults(args, someFunction);
除非你不存在等待异步发生的问题,如果没有奇怪的逻辑,你就无法做到这一点