为什么js await 会返回字符串,而不是Promise对象?

image.png

function says(detail) {
      return  new Promise(function (resolve, reject) {
        setTimeout(function () {
            resolve(detail);
        }, 500);
    });
}

async function test_async() {  //async函数返回一个promise
    // const data = await "hello await"; //返回常量
    // return data;
    console.log("str===================================");

    let trump = await says("TRUMP");  //返回Promise 对象;
    //这里却返回了字符串!!!
    trump.then(function (detail) {
        console.log("DETAIL", detail)
    });

 
    console.log("end==================================="); 

}

test_async().then(function (detail) {
    console.log(detail)
});
阅读 5.2k
2 个回答

async/await 可以近似看作同步方法了:

function func() => new Promise(resolve, reject) => resolve<T>();

func(); // 正常调用,返回类型 Promise<T>,想取得 T 需进一步 .then
await func(); // async/await返回类型 T

await定义的时候就说明了它的返回结果,如果后面是promise,就返回promise的结果(resolve或者reject想抛出的值),并不是promise本身这个对象;如果是字符串,就返回后面的字符串。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题