我有以下代码:
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个窗口!
如何同步执行以下代码?
我想得到以下结果:
计数器
1)计数器= 0
2)恶作剧
3) Nightmare 结束,反击++
1)计数器= 1
2) Nightmare 工作
3) Nightmare 结束,反击++
等等。
最佳答案
我认为您可以改为执行以下操作或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/