Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js中的简单、非常简单的等待_Javascript_Wait_Synchronous - Fatal编程技术网

Javascript js中的简单、非常简单的等待

Javascript js中的简单、非常简单的等待,javascript,wait,synchronous,Javascript,Wait,Synchronous,我是新来的(但我知道“复制粘贴器”^^)。 我最近开始创建一种基本类型的编程语言,我用JS解释它,很多JS^^。我设法创建了对象系统、变量等。。。特别是js中的库,但问题在于库“控制台”的“输入”功能,因为我在“pre”中添加了一个输入文本,我将其用作控制台,但代码在输入为空时继续执行。我想要的很简单,这是一个愚蠢的“等待条件”: var finish=false; document.querySelector(“输入”).addEventListener(函数(e){ 如果(e.keyCod

我是新来的(但我知道“复制粘贴器”^^)。 我最近开始创建一种基本类型的编程语言,我用JS解释它,很多JS^^。我设法创建了对象系统、变量等。。。特别是js中的库,但问题在于库“控制台”的“输入”功能,因为我在“pre”中添加了一个输入文本,我将其用作控制台,但代码在输入为空时继续执行。我想要的很简单,这是一个愚蠢的“等待条件”:

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、回调、事件通常要解决的问题,但是您没有明确描述您实际解决的问题到底是什么。