Javascript console.log不';t在等待后异步返回结果
我有一个等待文件存在并返回文件内容的代码。我运行代码,它等待'smscode.txt'文件。上传'smscode.txt'后,代码完成执行。没错 但由于某些原因,控制台日志(2);没有显示任何内容。 这是我执行函数的结果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=''; 函
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,这将消除所有额外的代码。但是您如何编码它是没有意义的,它不会一直等到它存在。。。。