我需要運行生成器異步(我需要在控制檯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