javascript - 使这个函数同步?
问题描述
我正在运行以下代码以从 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);
}
}
解决方案
如果正确理解了您的需求,您将需要使用 async 并 await 等待在您的函数中分配数据,因此您可能想尝试这样的事情
async function userinput(){
return await new Promise(resolve=>{
standard_input.on('data', function passdata (data) {
standard_input.removeEventListener("data",passdata);
choice = data;
if (choice == 1) resolve(response = rp.r1);
if (choice == 2) resolve(response = rp.r2)
console.log("[" + character.name + "]: " + response);
});
})
}
userinput()
推荐阅读
- amazon-web-services - RedShift 表行在使用另一个表更新后重复
- java - Synchronization-factory 删除 sftp:inbound-channel-adapter 的文件夹
- database - 双重哈希与加盐相结合是一种有效的密码存储技术吗?
- c# - 如何创建具有动态类型的 lambda 表达式
- regex - Perl 正则表达式一个衬里无法正常工作
- javascript - 覆盖并取消特定元素上的所有 jquery/javascript 事件
- javascript - 在这种情况下不能使用 v-img 吗?
- flutter - CustomScrollView 和 PageView 问题
- python - 在外汇数据上使用 NEAT python 进化神经网络
- python - 逗号 csv 文件后的最后一个值