当你有一个不等待任何东西的函数并返回一个promise时,你可以这样做。这将返回您可以await
的承诺。
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时使函数异步有什么好处吗?
答案 0 :(得分:2)
差异无法从外部观察到(除非你通过toString
得到函数源,但目前的转发器还不支持),所以这里没有任何好处。
使函数async
甚至可能会减慢它的速度,因为调用涉及更多的事情,创建一个新的承诺并解决它。
async
函数的一大优势,除了您已经提到的可维护性增加之外,还有错误处理。在函数体评估中抛出的任何异常都将转换为对返回的promise的拒绝,而不需要明确这一点。
请注意,您甚至不需要在await
使用return
,async function
可以async function doSomethingAamzing ({id, animalType, accessToken}) {
const url = `${url}/v1/${animalType}/${id}?access_token=${accessToken}`
return request.get(url)
}
直接 1 来自return
s:
try
1:除非你Project > Properties
在Publish
块内,does make a difference。