Promise 在主流程完成之前已解决运行

问题描述 投票:0回答:1

我有两个具有不同处理时间的函数,比如说 one() 需要 1 秒,two() 需要 0.3 秒。 我尝试先运行函数 one(),然后使用 Promise 执行函数 two()。在我的代码中,我将 two() 设置为已解决,但实际上它在 one() 完成之前运行函数 two()

抱歉我的英语不太好,我希望你能理解我的上下文

main();

function main() {
    let promise = new Promise(function(resolved) {
        one();
        resolved();
    });

    promise.then(two());
}

function one() {
    setTimeout(() => {
        console.log("ONE");
    }, 1000);
}

function two() {
    setTimeout(() => {
        console.log("TWO");
    }, 300);
}
node.js asynchronous async-await promise
1个回答
0
投票

您先运行一个,在一个之前记录两个,因为方法一需要更多超时。

您可以使用 async/await 来确保在执行函数二之前解决其中一个问题。

main();

async function main() {
    await one();
    two();
}

function one() {
    return new Promise(resolve => {
        setTimeout(() => {
            console.log("ONE");
            resolve();
        }, 1000);
    });
}

function two() {
    setTimeout(() => {
        console.log("TWO");
    }, 300);
}
© www.soinside.com 2019 - 2024. All rights reserved.