使用生成器等待输入,然后再继续 forEach 循环的主体
Using generators to wait for input before continuing the body of a forEach loop
无论我读了多少生成器文章,我都无法弄清楚这一点......我也尝试安装所有的光纤库,它们都不会安装在我的机器上,但这没关系,因为无论如何,我可能应该学习本机 ES5 机制的工作原理。
这就是到目前为止我的代码的样子。
var arr = [1, 2, 3];
arr.forEach(function(n, i, arr){
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('Enter input [' + [n, i].join(' ') + ']:', function(answer) {
arr[i] = { prompt: [n, i], response: answer };
rl.close();
});
});
问题在于,可以预见的是,排序是这样的:
Enter input [1 0]:
Enter input [2 1]:
Enter input [3 2]:
<input>
<input>
<input>
而我需要每个输出后面紧跟其相应的输入。 如何在发电机和yield
中做到这一点?
谢谢。。
在最新节点上用--harmony
--use_strict
试试这个(我在 v0.11.9 上尝试过):
var readline = require('readline');
function* questionaire(arr) {
for( var i = 0; i < arr.length; i++)
{
var n = arr[i];
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('Enter input [' + [n, i].join(' ') + ']:', function(answer) {
arr[i] = { prompt: [n, i], response: answer };
rl.close();
console.log(arr);
run.next();
});
yield n;
}
}
let arr = [1, 2, 3];
var run = questionaire(arr);
run.next();
相关文章:
- 等待函数执行后再继续
- 如何让foreach循环等待$http.get完成后再继续
- 如何在Node.js中等待函数完成后再继续
- 等待AJAX响应后再继续
- 等待 AJAX,然后再继续执行单独的函数
- 使用生成器等待输入,然后再继续 forEach 循环的主体
- 如何使用 JQuery 添加延迟?(让它等待 5 秒再继续)
- 等待多个 ipc 调用完成,然后再继续电子/冗余
- 如何等待findOneAndUpdate完成,然后再继续async.series
- 等待 API 调用在 Javascript 中完成,然后再继续
- Angular2 可观察 - 等待多个函数调用,然后再继续
- 等待方法的响应,然后再继续而不使用 SJAX
- 等待 .each 完成,然后再继续 (jQuery)
- 如何为性能执行多个异步函数(非嵌套),但等待它们完成再继续
- 在JavaScript或Jquery中,让循环等待按钮按下后再继续
- Javascript/jQuery使函数等待回调后再继续
- JavaScript等待,直到一个图像完全加载,然后再继续脚本
- 在Javascript中,如何使用ajax调用等待一个函数完成,然后再继续使用另一个函数
- 等待按钮单击,然后再继续
- 如何使代码在单击按钮后等待 X 秒,然后再继续