Return 에서 Await을 피하는 이유
TypeScript
나 JavaScript
의 비동기 함수 내에서 return await
은 거의 유용하지 않습니다. 비동기 함수의 return
은 항상 Promise.resolve
에 래핑되므로 return await
은 Promise가 resolve
되거나 reject
되기전에 추가적인 시간이 발생하는것 외에는 아무 일도 하지 않습니다.
1 | return await bar(); |
따라서 위와 같이 return
에 await
을 사용하지 않는 이유는 비동기 함수의 의미에 대한 이해 부족으로 인해 발생할 수 있는 일반적인 성능 위험을 방지 하기 위해서 입니다.
👎 Bad Code
1 | async function foo() { |
👍 Better Code
1 | async function foo() { |
하지만, 위의 Better Code 의 마지막에서는 bar()
에서 throw
하는 error
를 catch
할수있도록 하기 위해서는 await
이 필요합니다.
Reference
ESLint rules docs