Javascript js中的简单、非常简单的等待
我是新来的(但我知道“复制粘贴器”^^)。 我最近开始创建一种基本类型的编程语言,我用JS解释它,很多JS^^。我设法创建了对象系统、变量等。。。特别是js中的库,但问题在于库“控制台”的“输入”功能,因为我在“pre”中添加了一个输入文本,我将其用作控制台,但代码在输入为空时继续执行。我想要的很简单,这是一个愚蠢的“等待条件”:Javascript js中的简单、非常简单的等待,javascript,wait,synchronous,Javascript,Wait,Synchronous,我是新来的(但我知道“复制粘贴器”^^)。 我最近开始创建一种基本类型的编程语言,我用JS解释它,很多JS^^。我设法创建了对象系统、变量等。。。特别是js中的库,但问题在于库“控制台”的“输入”功能,因为我在“pre”中添加了一个输入文本,我将其用作控制台,但代码在输入为空时继续执行。我想要的很简单,这是一个愚蠢的“等待条件”: var finish=false; document.querySelector(“输入”).addEventListener(函数(e){ 如果(e.keyCod
var finish=false;
document.querySelector(“输入”).addEventListener(函数(e){
如果(e.keyCode==13){
var inputText=document.querySelector(“#input”).value;
完成=真;
}
}
如果(!完成),请等待)
//继续
根据完成后要执行的操作,您最好只调用一个函数,而不是将finish
设置为true
其他方面,您必须使用您可以使用的
异步函数是允许使用await
关键字的函数。wait
关键字等待一个Promise
解析,这样您就可以创建一个函数,在准备继续时返回一个Promise并解析一些值。该值将返回到wait
关键字
异步函数main(){
日志('输入您的姓名:');
const name=等待getInput();
日志(“你好”,姓名);
日志(“你多大了?”);
const ageString=await getInput();
const age=parseFloat(ageString);
如果(年龄>55岁){
日志(“你好,布默!”);
}否则,如果(年龄>40岁){
日志('Hello Gen Xer!');
}否则,如果(年龄>25岁){
日志(“你好,千禧年!”);
}否则{
log('Hello Zoomer!');
}
}
main();
函数getInput(){
返回新承诺(解决=>{
常量elem=document.createElement('input');
elem.type='text';
文件.正文.附件(elem);
元素焦点();
函数handleInput(){
元素删除事件列表器(“更改”,手动输入);
elem.disabled=true;
解析(元素值);
}
要素addEventListener(“变更”,手工输入);
});
}
函数日志(…args){
常量elem=document.createElement('pre');
elem.textContent=args.join(“”);
文件.正文.附件(elem);
}
input{display:block;}
在一个同步环境中,这是一个愚蠢的“等待条件”
,它暂停执行并等待一个异步事件,而该事件只有在执行所有(等待的)同步代码之后才会发生。您可能需要重新考虑您的方法。finish只是一个变量。它不是在发生变化时通知或发出的事件。如果“finish”实际上没有意义,请等待,除非您有一个检查finish是否更改的循环,或者在操作更改finish变量时有一个事件发射器或回调。“wait if”的实际用例是一个Promise、async/wait、回调、事件通常要解决的问题,但是您没有明确描述您实际解决的问题到底是什么。