欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

async/await是Promise的语法糖

程序员文章站 2022-04-30 09:10:10
...

async/await是Promise的语法糖(syntactic sugar ,https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Async_await)。那么,什么是语法糖呢?

语法糖的本质是不改变功能,但是让代码更简洁:
譬如这样写循环可能有点啰嗦:

i = 0;
while (i < 10) {
    i++;
}

这样写就很简洁:

i = 0;
while (i < 10) {
    i++;
}

两者的逻辑完全一致。可以将上面的for理解为下面的while的语法糖。

所以,在功能层面,async/await无法做到Promise做不到的事情。反之亦然。

下面的hello函数,返回的是一个promise。

async function hello() { return "Hello" };
console.log(hello()); //输出是:Promise {<fulfilled>: "Hello"}

要取得一个promise的值。或者用await,或者用then。两者是完全等价的。

async function hello() { return "Hello" };
hello().then((value) => console.log(value)) // 输出是:hello

或者:

async function hello() { 
  return "Hello" 
}

async function main () {
  console.log(await hello()); // 输出是:hello
}
main();
相关标签: Web