Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.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 console.log不';t在等待后异步返回结果_Javascript_Node.js - Fatal编程技术网

Javascript console.log不';t在等待后异步返回结果

Javascript console.log不';t在等待后异步返回结果,javascript,node.js,Javascript,Node.js,我有一个等待文件存在并返回文件内容的代码。我运行代码,它等待'smscode.txt'文件。上传'smscode.txt'后,代码完成执行。没错 但由于某些原因,控制台日志(2);没有显示任何内容。 这是我执行函数的结果 c:\work\docker\test-npm>node ideaOpen.js 1 c:\work\docker\test-npm> 更新和简化的代码版本,无文件 我希望显示“2”,但实际情况并非如此。脚本在5秒内成功完成其工作 让smsCode=''; 函

我有一个等待文件存在并返回文件内容的代码。我运行代码,它等待'smscode.txt'文件。上传'smscode.txt'后,代码完成执行。没错

但由于某些原因,控制台日志(2);没有显示任何内容。 这是我执行函数的结果

c:\work\docker\test-npm>node ideaOpen.js
1

c:\work\docker\test-npm>
更新和简化的代码版本,无文件

我希望显示“2”,但实际情况并非如此。脚本在5秒内成功完成其工作

让smsCode='';
函数checksCode(){
setTimeout(函数(){
smsCode=1234;
}, 5000);
}
检查SMSCODE();
让smsCodeExist=新承诺((解决、拒绝)=>{
if(smsCode){
解决(smsCode);
}
});
(异步()=>{
控制台日志(1);
让a=等待smsCodeExist;
控制台日志(2);

})();在这个stackoverflow问题的帮助下,我找到了一个解决方案。

让smsCode='';
函数checksCode(){
setTimeout(函数(){
smsCode=1234;
}, 5000);
}
检查SMSCODE();
let smsCodeExist=新承诺(函数(解析、拒绝){
waitformscode(解析);
});
函数waitForSmsCode(解析){
如果(!smsCode){
setTimeout(waitForMscode.bind(this,resolve),500);
}否则{
解决(smsCode);
}
}
(异步()=>{
控制台日志(1);
让a=等待smsCodeExist;
控制台日志(2);
控制台日志(a);

})();
我会尝试使用
然后
而不是
等待
。类似于:
smsCodeExist.then((响应)=>console.log(2))
。我认为这种情况下函数不必是异步的。如果您使用setTimeout等待异步结果,您不知道承诺是如何工作的
checksCode
是异步的,但您不在其中使用承诺。该代码中有很多错误。不知道为什么您不只是在读取文件时使用wait,这将消除所有额外的代码。但是您如何编码它是没有意义的,它不会一直等到它存在。。。。