我正在尝试使用噩梦js刮掉整个页面并将结果返回给调用函数。为了做到这一点,通过扩展噩梦的例子,我将一个参数传递给生成器函数。由于我不理解的原因,run()函数永远不会被调用。
感谢您的帮助。
var Nightmare = require('nightmare');
var vo = require('vo');
const fs = require('fs');
url = "http://google.com";
vo( run(url) )(function(err, result) {
if (err) throw err;
console.log("end result length: ", result.length);
fs.writeFile("test.html", result, function(err) {
if(err) { return console.log(err); } })
});
function *run(url) {
console.trace()
var x = Date.now();
var nightmare = Nightmare();
var html = yield nightmare
.goto(url) // 'http://google.com')
.evaluate(function() {
return document.getElementsByTagName('html')[0].innerHTML;
});
console.log("done in " + (Date.now()-x) + "ms");
console.log("result:", html.length);
yield nightmare.end();
return html;
}
答案 0 :(得分:1)
上面示例中的错误术语。这就是vo的工作原理:
vo( run )(url1, function(err, result) {
if (err) throw err;
console.log("end result length: ", result.length);
fs.writeFile("test.html", result, function(err) {
if(err) { return console.log(err); } })
});