最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

console.log在等待后没有返回结果

IT培训 admin 6浏览 0评论

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);
})();

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);
})();
发布评论

评论列表 (0)

  1. 暂无评论