您好,我正在编写一个应用程序,在其中我需要能够遍历一组URL。我知道有一个执行此操作的示例,但是我的问题略有不同,我将通过一些代码进行解释。
nightmare
.goto('some url')
.evaluate(() => {
//evaluate code
})
.then(dataArray => {
var innerRun = function* () {
var returnData = [];
for (var i = 0; i < dataArray.length; i++) {
var item = dataArray[i];
yield nightmare
.goto(item.url)
.evaluate(function () {
return false;
})
.screenshot(item.imgPath)
returnData.push(item);
}
return returnData;
}
vo(innerRun)(function (err, ads) {
if (err) {
console.log("Error running", err)
return;
}
});
});
我希望能够通过使用网址数组来循环该代码。我相信我在执行此操作时遇到了问题,因为我已经在
then
中进行了此操作。一旦击中yield nightmare
中的then
,它将停止运行var mainLoop = function* () {
for (var j = 0; j < urlArray.length; j++) {
var url = urlArray[j];
yield nightmare.goto(url)//same code as in example above
}
}
vo(mainLoop)(function (err, d) {
if (err) {
console.log("Error running", err)
return;
}
});
上面的代码是我试图做的。如果有人有任何想法,那将是巨大的帮助,谢谢!
最佳答案
也许试试这个:
var urls = ['http://example.com', 'http://example2.com', 'http://example3.com'];
var results = [];
urls.forEach(function(url) {
nightmare.goto(url)
.wait('body')
.title()
.then(function(result) {
results.push(result);
});
});
console.dir(results)
资料来源:https://github.com/rosshinkley/nightmare-examples/blob/master/docs/common-pitfalls/async-operations-loops.md
关于node.js - Nightmare 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47624655/