javascript - Nightmare 在循环内迭代

标签 javascript electron nightmare

我有以下代码:

for(var i = 0; i < 10; i ++){
    DoIt();
    console.log(i);
}

function DoIt(){
    var nightmare = Nightmare({
        electronPath: require('./node_modules/electron'),
        openDevTools:{
            mode: 'detach'
        },
        show: true
    });
    nightmare
        .goto('http://google.com')
        .end(()=>{
            return true;
        })
}

我正在 Electron 应用程序中使用它。然而,这会执行异步,我会立即在控制台中输出(0, 1,2,3,4,5,6,7,8,9),并且 Nightmare 会同时打开所有 10 个窗口!

如何同步执行以下代码? 我想得到以下结果:

当计数器 < 值(例如 10)时执行操作

1) 计数器 = 0

2) Nightmare 般的工作

3) Nightmare 结束,counter++

<小时/>

1) 计数器 = 1

2) Nightmare 般的工作

3) Nightmare 结束,counter++

等等

最佳答案

我认为你可以做这样的事情或者for循环:

(function iteration(i) {
  if (i < 10) {
    DoIt(i).then(() => iteration(i + 1))
  }
})(0)

为此请确保 DoIt 返回 Promise:

function DoIt(index) {
  var nightmare = Nightmare({
    electronPath: require('./node_modules/electron'),
    openDevTools: {
      mode: 'detach'
    },
    show: true
  });

  return nightmare
    .goto('http://google.com')
    .end(() => {
      return true;
    })
}

关于javascript - Nightmare 在循环内迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42857500/

相关文章:

electron - 在NSIS安装中包括非 Electron 文件夹

javascript - 使用对象值作为参数调用 JavaScript 函数

javascript - 升级到 KendoUI 2013.1.319 后,Treeview 抛出异常

javascript - 我正在学习更多 JavaScript,我想对这段代码有所了解

javascript - webpack-dev-server Electron Angular 1.6.1 热重载黑屏

node.js - 无法在一台计算机上的 git bash 中运行 "npm start",但在另一台计算机上我可以

javascript - 我如何在javascript中获取 future 日期的剩余秒数

javascript - 从网站保存表格会产生更多数据,然后在页面上显示

node.js - Nightmare 页面内容未加载 - 无法分配给对象 'onbeforeunload' 的只读属性 '#<Window>'

android - 无法理解如何在应用程序中打开简单的 TWA(使用 AndroidX)