如何在async nodejs中完成所有流程并打印出消息
How to finish all the process and print out the message in async nodejs?
我试图用nodejsasync.echSeries运行大量url。我想在处理完成后显示成功消息。但在我的代码中,成功消息只是在所有过程完成之前发出的。请看一下我的代码:
var request = require("request"),
cheerio = require("cheerio"),
mysql = require('mysql'),
async = require('async');
carlistrequest=request.defaults({
headers: {
'User-Agent':'request'
}
});
var callUrls =[
'http://www.carlist.my/used-cars/2625750/2006-mercedes-benz-s350-amg-w221-full-loan.html',
'http://www.carlist.my/used-cars/2625770/2010-toyota-estima-2-4-aeras-unregister-full-loan.html',
'http://www.carlist.my/used-cars/2625739/2012-honda-city-1-5-e-facelift-full-loan.html',
'http://www.carlist.my/used-cars/2536923/2002-bmw-318i-e46-2-0-cash-only-012-634-6341.html',
'http://www.carlist.my/used-cars/2625567/-loan-up-to-rm43k-2009-toyota-vios-1-5-j-spec-a-trd-bodykit-2015-final-clear-stock-hurry-up-.html'
];
async.eachSeries(callUrls, function(uri, next){
carlistrequest(uri, function(err, response, body){
var $ = cheerio.load(body);
var data={
name: $('#main-sidebar').find('.sub').text()
}
console.log(data);
})
next();
},function(callback){
console.log('All Url Done');
})
如何一个接一个地运行url,在所有url运行完毕后,只需显示成功消息即可。感谢:)
在请求的回调中移动next()
。
async.eachSeries(callUrls, function (uri, next) {
carlistrequest(uri, function (err, response, body) {
var $ = cheerio.load(body);
var data = {
name: $('#main-sidebar').find('.sub').text()
}
console.log(data);
next(); // <<<<<<<<<<<<
})
}, function (callback) {
console.log('All Url Done');
});
当function(uri, next)
使用一个url完成时,next()
告诉async,如果您在请求的回调之外调用它,则不需要等待请求完成。
另一个副作用是,在您的代码中,迭代并不像调用eachSeries()
时那样串行完成,多个请求同时运行。如果你有数百个url要请求,你将被禁止进入你正在查询的服务器。
看起来next()
调用需要在carlistrequest
回调内,而不是在旁边
我猜carlistrequest
是异步的(假设它需要回调)。。。所以你启动异步请求,然后立即告诉async.eachSeries
这个迭代已经完成(但它还没有完成——它还有工作要做。)
相关文章:
- 如何在服务器控制台上打印前端日志消息
- 尝试从对象打印出响应消息
- page.evaluate() 未打印控制台消息
- 使用javascript在HTML的输出窗口中打印控制台消息
- 返回 false 不会停止刷新页面,并且不打印错误消息
- JSON 响应打印 HTML 而不是消息
- 从javascript打印或回显html页面中的消息
- 有没有其他方法可以在不对 javascript 中的内容进行换行的情况下打印出调试消息
- 如何在控制台中打印来自在 gulp-run 中执行的进程的消息
- 删除消息选择打印机并使用javascript自动打印文档
- 从父对象内部的相邻对象打印对象会导致'未定义'消息
- 为什么我'我无法在AJAX响应中打印错误消息
- 如何在async nodejs中完成所有流程并打印出消息
- 无法根据时间打印消息
- 如何打印带有标签的HTML消息
- 在指定的函数中不打印Javascript控制台消息
- 试图打印消息在我的无序列表框jQuery
- 在打印的JavaScript代码中隐藏消息(待查找)
- 在 expect() 断言失败时打印消息
- 如何使用try, catch在错误处理中打印消息