我想处理第一项(' http://www.google.com')array2.foreach在开始第二项之前完成(' http://www.amazon.com') 但请求是支持线程,所以这个结果是
http://www.google.com
http://www.amazon.com
http://www.apple.com
1
2
.
.
但我想成为
http://www.google.com
1
2
3
.
.
http://www.amazon.com
1
2
.
.
mycode的
var async = require('async');
var request = require('request');
var array1 = ['http://www.google.com', 'http://www.amazon.com',
'http://www.apple.com'];
var array2 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
array1.each(function (item, callback) {
console.log(item);
aa(item, callback)
})
function aa(url) {
request(url, function (err, res, html) {
array2.forEach(function (item, callback) {
//This part Current Page crawling
console.log(item);
sleep(1000);
});
})
}
我该怎么做?
答案 0 :(得分:0)
您已添加async
模块但尚未使用。您需要使用它,您可能希望使用async.eachSeries()
功能来满足您的需求。这是可以帮助您的代码
var async = require('async');
var request = require('request');
var array1 = ['http://www.google.com', 'http://www.amazon.com',
'http://www.apple.com'];
var array2 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
function aa(url, callback) {
request(url, function (err, res, html) {
async.eachSeries(array2, function iteratee(item, callback2) {
console.log(item);
setTimeout(function() {
callback2(null);
}, 1000);
}, function done() {
callback(null)
});
})
}
async.eachSeries(array1, function iteratee(item, callback) {
console.log(item);
aa(item, callback)
}, function done() {
console.log('completed');
});