Node.js 处理异步函数。自定义回调?

Node.js 处理异步函数。自定义回调?,node.js,asynchronous,Node.js,Asynchronous,我有下面的代码,正在尝试在完成后访问所有记录数组。每个功能都已完成。然而,由于它是异步的,我想知道是否有可能强制回调每个下划线 var request=require('request'), cheerio=需要('cheerio'), _=要求('下划线'); var all_记录=[]; _.每个([0100],功能(启动){ var base_url=”http://www.example.com/search?limit=100&q=foobar&start="; var url=bas

我有下面的代码,正在尝试在完成后访问所有记录数组。每个功能都已完成。然而,由于它是异步的,我想知道是否有可能强制回调每个下划线

var request=require('request'),
cheerio=需要('cheerio'),
_=要求('下划线');
var all_记录=[];
_.每个([0100],功能(启动){
var base_url=”http://www.example.com/search?limit=100&q=foobar&start=";
var url=base_url+start;
请求(url、函数(err、res、body){
var$=总负荷(车身),
links=$('#results.row');
$(链接)。每个(功能(i,链接){
var$link=$(link);
var记录={
标题:$link.children('.title').text().trim()
};
所有_记录。推送(记录);
});
});
});
//需要运行一次。每个都已完成最终迭代。
控制台日志(所有_记录);

以下是一个简单的解决方案:

使用的
.parallel
方法可以实现更优雅的解决方案

var requests = []; //an array for all the requests we will be making

for(var i=0;i<=100;i++){
   requests.push((function(done){ //create all the requests
       //here you put the code for a single request. 
       //After the push to all_records you make a single done() call 
       //to let async know the function completed
   }).bind(null,i));//the bind is that so each function gets its own value of i   
}
async.parallel(requests,function(){
    console.log(all_records);
});
var请求=[]//我们将发出的所有请求的数组

对于(var i=0;iasync)。每种方法都是最容易实现的

async.each([0100],函数(启动){
var base_url=”http://www.example.com/search?limit=100&q=foobar&start=";
var url=base_url+start;
请求(url、函数(err、res、body){
var$=总负荷(车身),
links=$('#results.row');
$(链接)。每个(功能(i,链接){
var$link=$(link);
var记录={
标题:$link.children('.title').text().trim()
};
所有_记录。推送(记录);
});
});
},函数(err){
控制台日志(所有_记录);
});

ASYNC是最后的方法,但最后我还是用了Acsi.FoeChan.很好,如果这个解决方案解决了你的问题,请考虑接受这个答案。另外,我认为你的意思是AYNC。每一个都不是Orthac。是的,每个都是根据文档的。
var requests = []; //an array for all the requests we will be making

for(var i=0;i<=100;i++){
   requests.push((function(done){ //create all the requests
       //here you put the code for a single request. 
       //After the push to all_records you make a single done() call 
       //to let async know the function completed
   }).bind(null,i));//the bind is that so each function gets its own value of i   
}
async.parallel(requests,function(){
    console.log(all_records);
});