这似乎是该run()
方法的目的。您可能希望在循环中设置并运行每个屏幕截图,因为该screenshot()
方法依赖于 phandomjs 方法render()
,并且render()
是严格同步的(至少在一年前):
urls.forEach(function (url) {
nightmare = new Nightmare();
nightmare.goto(url).screenshot(path).run(function(err, nightmare) {
console.log('this executes when your screenshot completes');
// run() appropriately tears down the nightmare instance
});
});
console.log('finished all');
您不会从一次设置所有屏幕截图中获得任何异步好处,并且“完成所有”保证仅在渲染所有屏幕截图后运行。
或者,在 nightmarejs 源代码中,它看起来screenshot()
确实采用了done
似乎是回调的第二个参数,但它直接将其传递给 phantomjsrender()
方法,并且如上面的链接所示,允许该方法采用打回来。