0

无论我阅读了多少生成器文章,我都无法弄清楚......我也尝试安装所有的光纤库,但它们都不会安装在我的机器上,但这没关系,因为我可能应该学习如何无论如何,原生 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

谢谢..

4

1 回答 1

0

在最新的节点上试试这个--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();
于 2013-11-24T19:44:37.573 回答