在JavaScript中使用Promise时有些奇怪

时间:2016-06-19 04:30:16

标签: javascript promise es6-promise

我有一个返回promise对象的函数。这是我的代码

var foo = function(){
    // doSomething() is a promise object
    return doSomething().then(() => {
        Promise.resolve('Hello');
    });
};

foo().then((res) => {
    console.log(res);
    // res = undefined but not "Hello"
});

我认为函数foo会返回promise对象,我会得到字符串“Hello”。但我没有定义。为什么呢?

1 个答案:

答案 0 :(得分:4)

你错过了Promise.resolve之前的回复,所以它应该是

var foo = function(){
    return doSomething().then(() => {
        return Promise.resolve('Hello');
        ^^^^^^
    });
};

然而,实际上你根本不需要它,并且只能返回字符串Hello。

var foo = function(){
    return doSomething().then(() => {
        return 'Hello';
    });
};

通过使用箭头函数的简洁体形,您可以使其更简单,而不是{}

var foo = function(){
    return doSomething().then(() => 'Hello');
};