我想知道在node js中函数名之前使用async关键字的实际含义。
dffbzjpn1#
js是异步的,因为代码不需要按照调用的顺序运行,但是,您必须让Node为您做这件事。将函数定义为async意味着该函数将返回一个Promise,该Promise解析为函数的任何返回值:
async
Promise
// This function returns a `Promise` that resolves to `true` const func = async () => { return true; }
重要的是,将函数定义为async还允许使用await关键字:
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()) }
rryofs0p2#
async函数总是返回promise。如果返回非承诺,则返回值将 Package 在Promise.resolve中。如果引发,则将异常 Package 在Promise.reject中。因此,async关键字是一个契约,它保证函数的返回值是异步的。这对于await关键字是必需的,因为如果返回promise,则只能返回await。
promise
Promise.resolve
Promise.reject
2条答案
按热度按时间dffbzjpn1#
js是异步的,因为代码不需要按照调用的顺序运行,但是,您必须让Node为您做这件事。
将函数定义为
async
意味着该函数将返回一个Promise
,该Promise
解析为函数的任何返回值:重要的是,将函数定义为
async
还允许使用await
关键字:async
/await
只是传统承诺的语法糖:rryofs0p2#
async
函数总是返回promise
。如果返回非承诺,则返回值将 Package 在Promise.resolve
中。如果引发,则将异常 Package 在Promise.reject
中。因此,
async
关键字是一个契约,它保证函数的返回值是异步的。这对于
await
关键字是必需的,因为如果返回promise
,则只能返回await
。