我需要运行生成器异步(我需要在控制台1,2,3,4,5导致现在我有4,1,2,3,5结果)任何人都可以帮助我吗?我需要运行任务,并在前一个任务完成之前等待它运行下一个任务。我需要使用(如果可能的话:只)发电机(?或发电机+承诺)Javascript ES6发生器异步
这里我的代码
/*jshint esnext: true */
function show(msg) {
var _msg = msg;
setTimeout(function() { console.log(_msg);}, 2000);
}
function show2(msg) {
console.log(msg);
}
var stack = [];
// add some function to stack
stack.push(function() { show(1); });
stack.push(function() { show(2); });
stack.push(function() { show(3); });
stack.push(function() { show2(4); });
stack.push(function() { show(5); });
function* generator1() {
for(var key of stack) {
yield key();
}
}
var gen = generator1();
gen.next();
gen.next();
gen.next();
gen.next();
gen.next();
尝试写不发生器(仅使用回调或承诺)第一个解决方案。那么我们可能会告诉你如何在这幅图中包含生成器 - 因为它们自己的生成器不是异步的。 – Bergi