[英]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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.