console.log在等待后没有返回结果
我有一个代码,等待文件存在并返回文件内容。我运行代码,它等待'smscode.txt'文件。我上传“ smscode.txt”代码后,执行完成。没错。
但是出于某种原因,console.log(2);什么都不显示。这是我执行函数的结果。
c:\work\docker\test-npm>node ideaOpen.js
1
c:\work\docker\test-npm>
var fs = require('fs');
let smsCode = '';
function checkSmsCode() {
if(!smsCode) {
fs.readFile('smscode.txt', 'utf8', (err, contents) => {
smsCode = contents;
});
setTimeout(checkSmsCode, 1000);
}
}
let smsCodeExist = new Promise((resolve, reject) => {
checkSmsCode();
setTimeout(() => {
if (smsCode) {
resolve(smsCode);
}
}, 1000);
});
(async () => {
console.log(1);
let a = await smsCodeExist;
console.log(2);
})();
回答如下:如果未将smsCode作为参数传递,则不会添加其他条件。因此,在smsCodeExist函数中无法解决诺言。
我的解决方案将根据需要为您提供输出。
链接到Promise documentation
var fs = require('fs');
let smsCode = '';
function checkSmsCode() {
if(!smsCode) {
fs.readFile('smscode.txt', 'utf8', (err, contents) => {
smsCode = contents;
});
setTimeout(checkSmsCode, 1000);
}
}
let smsCodeExist = new Promise((resolve, reject) => {
checkSmsCode();
setTimeout(() => {
if (smsCode) {
resolve(smsCode);
} else {
resolve(1) // CHECK THIS: Added this line
}
}, 1000);
});
(async () => {
console.log(1);
let a = await smsCodeExist;
console.log(2);
})();