函数在循环前未完成
Function Not Completeing Before Loop
我正在尝试将 url 数组传递到 node.js 中的这个函数中,它似乎在实际将它们传递到函数之前循环访问 URL。下面是调用该函数的代码:
async.eachSeries(validDatesArr,
function(validDatesArrItem, callback){
var newMonth = validDatesArrItem.getMonth()+1;
loadPage(baseURL+'/month='+newMonth+'&day='+validDatesArrItem.getDate()+'&year='+validDatesArrItem.getFullYear(),function(data){
loopThroughData(data, function(){
var d = validDatesArr[count];
d.setDate(d.getDate() + 1);
validDatesArr.push(d);
count++;
callback();
});
});
}, function(err){
if(!err){
console.log('We processed each date requests one by one');
}
}
);
我正在使用的函数是加载页面。如您所见,我每次都会向日期变量添加一个日期,然后将带有修改日期的 URL 传递到 loadPage 函数中。我正在努力让一切按顺序工作。似乎我的其余代码正在按顺序进行,但我无法让这个特定的代码传递 URL,等待函数完成,然后传递第二个 URL。我认为这就是async.eachSeries函数的重点。
所以回顾一下,我想:
- 在第一个 URL 上调用 loadData 函数
- 等待该函数完成
- 继续(添加到日期和循环以再次运行 loadPage 函数)。
下面是加载页面函数代码:
function loadPage (url, callback){
data = [];
request(url, function(err, response, body){
if(!err && response.statusCode ==200){
console.log('Loading URL: ',url,' into Cheerio.');
var $ = cheerio.load(body);
$('td', 'tbody').each(function(){
var text = $(this).text();
data.push(text);
});
callback(data);
}
});
}
提前感谢!
我假设request
是一个异步函数。因此,此函数在单独的线程中运行。程序继续执行,无需等待请求完成,从而创建所描述的效果。尝试查找同步函数,或在 Java 中实现信号量之类的东西,以确保程序等待request
完成。
相关文章:
- 函数未完全循环通过循环
- 在jQuery就绪函数上未完成Primefaces布局组件
- 添加innerHTML和自动完成未完成的行
- Async.js队列工作程序未完成
- 上的jquery inputmask事件触发器未完成
- Promise.map未完成,因为后续的Promise.ejoin先完成?承诺
- Javascript 未完成循环
- 如何确保所有 ajax 调用都已成功执行(未完成)
- DTLS 握手未完成 - ORTC 原型
- 当我们使用 ajax post 请求上传文件时,如何取消将文件上传到服务器并删除文件(在上传未完成之间)
- 函数在循环前未完成
- jQuery 转换未完成
- 僵尸.js触发的 AJAX 请求未完成
- 仅在卸载未完成时触发触发器弹出窗口
- 异步每个系列如何在完成循环后传递 var
- Netty-socketio:客户端未完成升级 - 关闭传输
- Javascript循环未完成
- 对于递归函数中的循环未完成
- 在for循环中切换语句,if语句未完成
- 循环未完成