node-horseman async无法正常工作?

时间:2015-05-29 22:48:06

标签: node.js asynchronous phantomjs

我正在使用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' );
    }
)

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我使用async和node-horseman也遇到了同样的问题。如果使用.forEachLimit函数而不是.each,则可以限制正在执行的请求数量。我在Github上也开了一个关于这个问题的问题:

https://github.com/johntitus/node-horseman/issues/28