承诺不等待完成

时间:2017-01-31 22:02:01

标签: javascript ecmascript-6 promise

我今天看了很多例子。他们似乎建议应该在链中执行以下代码:

let f = () => {
    return new Promise((res, rej) => {
        console.log('entering function');
        setTimeout(() => {
            console.log('resolving');
            res()
        }, 2000)
    });
};

Promise.resolve()
    .then(f())
    .then(f());

预期输出为:

entering function
resolving
entering function
resolving

但事实并非如此。输出是

entering function
entering function
resolving
resolving

我无法弄明白为什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:11)

尝试then(f)而不是then(f())

then需要一个功能。

你也可以then(()=>f())