javascript - 为什么我的递归函数不会从promise调用?

标签 javascript promise nightmare

无论做什么,我都无法递归调用函数。我试过返回并存储到变量和许多其他东西中,但是它只被调用过一次?

 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()意味着 promise 已经完成并且成功了吗?

更新:

似乎删除.end()已解决了我的问题。我不完全理解 Nightmare 文档https://github.com/segmentio/nightmare,它说它完成了所有队列操作。我从一个示例中提取了一些代码,其中有end()。删除它会带来任何影响吗?

最佳答案

你能试试这个流程吗

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();

关于javascript - 为什么我的递归函数不会从promise调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50634938/

相关文章:

javascript - d3 和 svg 中的自定义上下文菜单

javascript - jQuery next().addClass() 和 prev().addClass() 问题

javascript - 跟踪对象是否改变

javascript - React Native 查找导致可能未处理的 promise 拒绝的原因

javascript - 使用javascript更改不同形状的颜色

javascript - 在 Promise.race 中的第一个 Promise 被解析(拒绝)后,执行是否完成?

http - 什么会导致 Nativescript angular2 中的 promise 失败?

javascript - 如何在 nightmare.js 中运行多个评估方法?

javascript - 如何在链接 promise 后结束 NightmareJs 实例?

testing - 如何使用禁用的 JavaScript 和 noscript 标签对网站进行 e2e 测试?