在 JavaScript 中使用 Promise 时有些奇怪

Some strange when using Promise in JavaScript

我有一个 return 承诺对象的函数。这是我的代码

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 会 return promise 对象,我会得到字符串 "Hello"。但是我不确定。为什么?

您在 Promise.resolve 之前缺少一个 return,所以它应该是

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

然而,实际上您根本不需要它,可以 return 字符串 Hello。

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

您可以使用箭头函数的简洁主体形式使其更简单,省去 {}

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