我正在运行以下代码以从 nodejs 中的终端获取输入(我选择了这种方法,因为它不需要依赖项)并且我需要它同步工作。它位于一个被for
循环重复调用的函数内部,因此在其当前的异步状态下,它会导致一些问题。
这是我想要同步的功能:
standard_input.on('data', function (data) {
choice = data;
if (choice == 1) response = rp.r1;
if (choice == 2) response = rp.r2;
console.log("[" + character.name + "]: " + response);
});
谢谢你的帮助!
编辑:我的情况和代码的更详细解释如下:
我有一个for
调用同步函数的循环,conversation()
. 在这个函数中有一段代码要求for
循环停止,直到用户输入一些内容。我正在寻求一种方法来做到这一点,或者使用我现有的获取用户输入的方法(如上所示)或不同的方法。
编辑 2:续集:
更完整的代码片段可帮助您解答问题,因为提供的某些答案对我不起作用,因为我对自己要做什么还不够清楚。
function conversation(character, num, rp) {
if (negStreak >= 4) {
return false;
}
var choice;
var response;
console.log("CHOICES:");
console.log("(1): " + rp.c1);
console.log("(2): " + rp.c2);
console.log("Type 1 or 2 and hit Enter.");
standard_input.on('data', function (data) { //this is how i'm getting input
choice = data;
if (choice == 1) response = rp.r1;
if (choice == 2) response = rp.r2;
negStreak++
console.log("[" + character.name + "]: " + response);
});
}
function game(char) {
negStreak = 0;
if (char.name == "Vern") array = vern_conv;
if (char.name == "Jericho") array = jericho_conv;
if (char.name == "Las") array = las_conv;
if (char.name == "char3") array = char3_conv;
if (char.name == "char4") array = char4_conv;
for (i = 0; i < array.length; i++) { //this is the for loop i'm talking about
var reactionPair = array[i];
conversation(char, i, reactionPair);
}
}