为什么 phantomjs 代码不通过数组?

why phantomjs code doesn't go through array?

在运行这个代码之后他用第一页的源代码保存了无限多的文件(“http://site1.com”),为什么他不通过其他链接并且不'停不下来?

var args = ["http://site1.com", "http://site2.com", "http://site3.com"];

var fs = require('fs');
var i = 0;

function handle_page(file){
    page.open(file,function(){
        page.evaluate(function(){
            fs.write(i + '.html', page.content, 'w');
        });
        setTimeout(next_page,100);
   });
}

function next_page(){
   var file = args.shift();
   if(!file){ phantom.exit(0); }
   i++
   handle_page(file);
}
next_page();

page.evaluate() 是 PhantomJS 中的沙盒页面上下文。它无权访问外部定义的任何变量。因此,您不能在其中引用 fspage,也不需要,因为 page.content 在外部上下文中可用:

page.open(file,function(){
    fs.write(i + '.html', page.content, 'w');
    setTimeout(next_page,100);
});

剩下的代码看起来不错。