我正在使用node-horseman(希望)允许我执行异步phantomjs操作来实现异步无头浏览。阵列中的数字在这个阶段是无关紧要的,我只是将代码剥离到最低限度以证明我遇到的问题。
当我运行下面的代码时,它运行异步,但是,一旦我创建一个新的Horseman,它就会停止异步运行。我知道它没有运行异步,因为输出(控制台记录数字)以线性方式发生,每个数字在均匀的时间后显示。运行它异步它应该是瞬时的,因为显示每个数字的开销应该是相同的,所以所有数字应该同时出现,就像他们没有创建骑士对象时一样(如下面的代码所示,骑士对象已禁用)。
var Horseman = require('node-horseman');
var async = require('async');
var testArray = [ 1, 2, 3, 4, 5 ];
function evaluate( item ) {
console.log( item );
/*It runs asynchronously but if the two lines below are activated it
stops being async and runs synchronously, defeating the whole purpose
of using horseman??*/
//var horseman = new Horseman();
//horseman.close();
}
async.each(
testArray,
function( item, callback ) {
evaluate( item )
callback();
},
function( err ) {
console.log( 'all complete' );
}
)
非常感谢任何帮助。
答案 0 :(得分:1)
我使用async和node-horseman也遇到了同样的问题。如果使用.forEachLimit函数而不是.each,则可以限制正在执行的请求数量。我在Github上也开了一个关于这个问题的问题: