节点请求多线程问题

node request multi thread issue

我要处理第一项('http://www.google.com') array2.foreach complete before start second item('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
.
.

我的代码

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);
        });
    })
}

我该怎么做?

您已添加 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');
});