2017-11-20 8 views
0

약속 반환 : 그러나비동기 기능 나는 다음과 같은 웹에서 예를 찾을

async function asyncFunc() { 
    return Promise.resolve(123); 
} 
asyncFunc() 
    .then(x => console.log(x)) // 123 

을, 나 또한 그런 식으로 쓸 수 있습니다 : 나는, 내가 할 수있는 말은

async function asyncFunc() { 
    return 123 
} 
asyncFunc() 
    .then(x => console.log(x)) // 123 

을 해결 된 답변 (예 : 메모/캐싱)을 반환하기위한 유스 케이스를 찾고, 간단히 결과를 간단하게 반환 할 수 있다면 실제로 사용해야하는 이유는 무엇입니까? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function에서

+0

비동기 함수/promise를 반환하지 않으면 비동기를 사용할 필요가 없습니다. –

+0

두 번째 경우는 의미가 없습니다. 약속은 비동기 적으로 좋습니다. 두 번째 경우는 비동기가 아닙니다. –

+2

이 예제를 웹에서 어디에서 발견 했습니까? 더 이상 문맥이 없으면, 이것은 정말로 이상하게 보입니다. –

답변

5

는 :

비동기 함수가 호출

, 그것은 약속을 반환합니다. async 함수가 값을 반환하면 Promise는 반환 된 값으로 확인됩니다. async 함수가 예외 또는 일부 값을 throw하면 Promise는 throw 된 값과 함께 거부됩니다.

강조 광산.

첫 번째 경우에 해결 된 약속을 반환하는 것은 불필요하지만 모든 예제는 완전히 유효합니다. 일반 값을 반환하는 비동기 함수는 자동으로 해당 값을 해결 된 약속으로 래핑합니다. 일반적으로 사람들은 두 번째 예제를 더 선호한다고 생각합니다.

+2

명백한 약속이없는 'async' 버전 불행한 진실은 많은 사람들이이 기능을 인식하지 못하고 많은 혼란을 야기 할 수 있다는 것입니다. – Andrew