これがメソッドの目的のようrun()
です。screenshot()
このメソッドは phandomjs メソッドrender()
に依存しており、render()
厳密に同期しているため (少なくとも 1 年前の時点では) 、ループ内で各スクリーンショットをセットアップして実行することをお勧めします。
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');
一度にすべてのスクリーンショットを設定しても、非同期の利点は得られません。また、「finished all」は、すべてのスクリーンショットがレンダリングされた後にのみ実行されることが保証されています。
あるいは、nightmarejs のソースでは、コールバックのように見えるscreenshot()
2番目のdone
パラメーターを使用しているように見えますが、それを直接 phantomjsrender()
メソッドに渡しています。上記のリンクに見られるように、そのメソッドが折り返し電話。