繁体   English   中英

使用setTimeout的基本JavaScript承诺测试

[英]Basic JavaScript promise test with setTimeout

我正在尝试使用bluebird进行基本的诺言测试,但结果并非我所期望的。 我正在尝试获取“应该首先登录?4000”消息,以便首先登录到我的控制台,但是总是首先显示第二条控制台消息。 我在做什么错,我该怎么办才能使“ 4000”消息记录在2000消息之前?

function longRunningPositiveTest3() {
    return new Promise(function(resolve) {
        setTimeout(function () {
            console.log("Should I be logged first? 4000");
            resolve();
        }, 4000);
    });
}

function longRunningPositiveTest4() {
    return new Promise(function(resolve) {
        setTimeout(function () {
            console.log("Should I be logged first? 2000");
            resolve();
        }, 2000);
    });
}

Promise.resolve(longRunningPositiveTest3())
    .then(longRunningPositiveTest4());

谢谢

您正在调用这两个立即启动超时的函数。 您需要将回调函数传递给then

采用

Promise.resolve(…) // some starting promise
.then(longRunningPositiveTest3)
.then(longRunningPositiveTest4);

要么

longRunningPositiveTest3() // no need to wrap it in Promise.resolve() (but no harm either)
.then(longRunningPositiveTest4);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM