NodeJS 为什么在节点已经是异步的情况下,在节点函数中添加async关键字?为什么我们需要知道这是一个异步函数?

u91tlkcl  于 2022-12-22  发布在  Node.js
关注(0)|答案(2)|浏览(138)

我想知道在node js中函数名之前使用async关键字的实际含义。

dffbzjpn

dffbzjpn1#

js是异步的,因为代码不需要按照调用的顺序运行,但是,您必须让Node为您做这件事。
将函数定义为async意味着该函数将返回一个Promise,该Promise解析为函数的任何返回值:

// This function returns a `Promise` that resolves to `true`
const func = async () => {
  return true;
}

重要的是,将函数定义为async还允许使用await关键字:

const func = async () => {
  const result = await fetch("someUrl");
  return await result.toJSON();
}

async/await只是传统承诺的语法糖:

// This is the same function as above
const func = () => {
  return fetch("someUrl")
    .then(result => result.toJSON())
}
rryofs0p

rryofs0p2#

async函数总是返回promise。如果返回非承诺,则返回值将 Package 在Promise.resolve中。如果引发,则将异常 Package 在Promise.reject中。
因此,async关键字是一个契约,它保证函数的返回值是异步的。
这对于await关键字是必需的,因为如果返回promise,则只能返回await

相关问题