无论我做什么,我都无法通过递归方式调用我的函数。我尝试过返回并存储到变量和其他许多东西中,但它只被调用一次?
var scrape = () => {
var waitTime = randomIntFromInterval(1000, 10000);
nightmare.goto('http://...')
.wait(waitTime)
.evaluate(() => {
var data = [];
// ... doing work to get data from browser here
return data
})
.end()
.then((result) => {
console.log('scraped successfully!' + new Date());
scrape();
}
)
}
scrape();
我认为最后的.then()
意味着承诺已经完成且已成功?
更新
似乎删除.end()
已解决了我的问题。我并不完全理解噩梦文档https://github.com/segmentio/nightmare,它说它完成了任何队列操作。我从示例中提取了一些代码,其中有end()
。我是否会因删除此内容而遇到任何影响?
答案 0 :(得分:0)
你能试试这个流程,
var scrape = () => {
var waitTime = randomIntFromInterval(1000, 10000);
nightmare.goto('http://...')
.then((result) => {
console.log('scraped successfully!' + new Date());
////do the end process here////
scrape();
}
)
}
scrape();
答案 1 :(得分:0)
在您的网址末尾添加伪随机哈希,例如#' + new Date().getTime()
。如果这对您有用,那么您可能会遇到this issue,其中使用噩梦.goTo()
导航到相同的网址会导致无操作。