繁体   English   中英

如果 function 不使用等待,它是否应该是异步的

[英]Should a function be async if it does not use await

考虑一个 javascript function,它本质上是另一个异步 function 的包装器。 包装 function 本身是否必须是异步的,即使它确实需要等待底层 promise?

这是一个简单的例子:

function myWrapperFunction() {
    console.log('Calling myAsyncFunction')
    return myAsyncFunction();
}

async function myAsyncFunction() {
    const url = 'URL'
    const data = await fetch(url)
    return JSON.parse(data)
}

myWrapperFunction应该是async吗? 我猜它不需要给出它只是从myAsyncFunction 但是,es-lint 的no-return-await规则的正确代码部分中的第一个示例另有提示: https://eslint.org/docs/rules/no-return-await

谢谢!

我会这样写:

function myWrapperFunction() {
    console.log('Calling myAsyncFunction')
    const promise = myAsyncFunction();
    return promise;
}

以提高代码的可维护性。 例如,确保其他人不需要问自己返回 Promise 是否是故意的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM