当您有一个不等待任何内容并返回 promise 的函数时,您可以执行此操作。这将返回一个您可以等待
的 promise 。
function doSomethingAamzing ({id, animalType, accessToken}) {
const url = `${url}/v1/${animalType}/${id}?access_token=${accessToken}`
return request.get(url)
}
这不是必需的,但我们可以做到。
async function doSomethingAamzing ({id, animalType, accessToken}) {
const url = `${url}/v1/${animalType}/${id}?access_token=${accessToken}`
return await request.get(url)
}
在后者中,作为开发人员更容易理解该函数是异步的并且将返回一个 promise ,这在第一个函数中不是很清楚。我认为使用后者可能是更好的做法的唯一原因是,如果代码经过了一些静态代码分析,可以从显式 async
语法中受益。
当函数返回 Promise 时使其异步有什么好处吗?
最佳答案
从外部无法观察到差异(除非您通过 toString
获取函数源,无论如何当前的转译器都不支持),因此这里没有任何好处。
使函数异步
甚至可能会减慢速度,因为调用涉及更多事情,创建一个新的 promise 并解决它。
除了您已经提到的增强的可维护性之外,async
函数的一大优点是错误处理。函数体求值中抛出的任何异常都将转换为对返回的 Promise 的拒绝,无需明确说明这一点。
请注意,您甚至不需要在这里使用 await
,您可以直接从异步函数
s:返回
thenables1
async function doSomethingAamzing ({id, animalType, accessToken}) {
const url = `${url}/v1/${animalType}/${id}?access_token=${accessToken}`
return request.get(url)
}
1:除非您在 try
block 内return
,否则does make a difference .
关于javascript - 当函数返回 Promise 时使其异步有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37599723/