我试图了解Promise。但是在这里我很困惑。
我想创建一个测试功能,将在3秒后打印3000,然后在2秒后打印2000,然后在1秒后打印1000。这是我的代码:

'use strict';
var Q = require('q');

function delayConsole(timeOut) {
    var defer = Q.defer();
    setTimeout(function(){
        console.log(timeOut);
        defer.resolve(2000);
    },timeOut);
    return defer.promise;
}

// This works
delayConsole(3000).then(function(){
    return delayConsole(2000);
}).then(function(){
    return delayConsole(1000);
    });

// This doesn't work. Why?
delayConsole(3000).then(delayConsole(2000)).then(delayConsole(1000));

最佳答案

在那里,您立即调用函数delayConsole

.then(delayConsole(2000))


那就是:您不传递函数,而是函数调用的结果,您不必等待对诺言的链接。

当你做

then(function(){
    return delayConsole(2000);
})


那么您传递一个函数,而不是该函数调用的结果。当解决了promise链中的前一个元素时,可以调用该函数。

关于javascript - 有人可以为我解释以下代码吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26095626/

10-11 13:15