为什么这个简单的JS promise return一个promise?

Why does this simple JS promise return a promise?

一个非常简单的问题。我已将其归结为最简单的版本来说明我的问题。

为什么这个 vanilla JS return 是一个 promise,我怎样才能得到它 return "Hello"?

    
let result = test()
  .then(function(result) {
     return result;
  });

alert(result);
    
function test(serialized) {
  return new Promise(function(resolve, reject) {
    resolve("Hello");
  });
}

发生的事情是,您是 "alerting" return 由 then 方法编辑的值。

then 方法总是 return 一个承诺,即使你正在 return 一个值,它被包裹在一个已解决的承诺中(例如 Promise.resolve('Hello')),这允许您实现 chainability,例如您可以在 then 回调中调用和 return 其他承诺,它们将等待决议继续并解决。

  test()
      .then(function(result) {
        console.log(result);
        return result + ' world!';
      }).then(function(result2) {
        console.log(result2); // Hello world!
        return new Promise(function (resolve) { resolve('End') });
      }).then(function (result) {
         console.log(result);
      })
    
    
    function test(serialized) {
      return new Promise(function(resolve, reject) {
        resolve("Hello");
      });
    }

promise.then((result) => {}) 始终 return 另一个承诺,以便我们可以链接多个 .then() 调用。

how can I get it to return "Hello"? : 为此你必须await一个承诺。

例如:alert(await test())问题是您只能在异步函数中使用 await。

另一种选择是在那时发出警报。 test().then((result) => alert(result))