Await, Promise 및 Promise 메서드

tl;dr은 대기 및 실행 차단에 대한 이야기를 마쳤습니다.Promise 사용하지 않아도 여전히 가치 있고 강력한 이유를 살펴보았습니다..then()

기다리다



따라서 await 에 대한 경고는 기술적으로 async 함수 내부 작업으로 제한됩니다. 이것은 의도적으로 해결 방법이 있지만 처음에는 시행되는 관행을 고수하십시오. 결국 코딩은 실험하고 깨고 만드는 것 😆

실행 일시 중지



따라서 키워드 await는 약속이 해결될 때까지 async 함수의 실행을 일시 중지합니다... 즉, 다음에서 무언가가 반환될 때까지const data = await APICall()data 변수에는 이제 해결된 약속의 반환 값이 포함됩니다. Promise가 거부되면 예외가 발생합니다. await만으로는 오류를 정상적으로 처리하지 못하지만 오류 경계를 만들 수 있지만 try/catch 블록을 사용하는 것을 선호합니다.

평행한



이것은 Promise.all([call1, call2])여러 비동기 호출을 해결하는 기능에 대해 조금 이야기했지만 다시 살펴보겠습니다. 따라서 각각이 마지막 이후에 해결될 때까지 기다리지 마십시오. 이것은 차례로 await 단독으로 실행 차단으로 관찰되는 동기와 유사한 동작을 제거합니다. 둘 다 다른 것보다 낫지 않지만 다양한 사용 사례에 대한 장점과 단점이 있습니다.




// Pausing Execution - numbers indicate milliseconds for data to return
async function somethingMakingApiCall() { 
 const dataFirst = await callFirst(10) // pause 10ms
 const dataSec = await callSec(1) // pause 1ms
 const dataThird = await callThird(5) // pause 5ms

// 16ms later reaches this return with resolved data.
return [dataFirst, dataSec, dataThird]
}
// The order of data returned is irrelevant, // execution order is the same. 
console.log(somethingMakingApiCall()) // [ 10ms, 1ms, 5ms ]

// Parallel -- What's the benefit?
async function somethingMakingApiCall() { 
// All calls are executing in Promise.all() so no pause for each occurs.
const [ first, sec, third ] = await Promise.all([ callFirst(10), callSec(10), callThird(10) ])

// 10ms later the function execution
// reaches return with resolved data.
return [ first, sec, third ];
}

console.log(somethingMakingApiCall()) // 10ms, 10ms, 10ms


약속



이 기사와 이전 기사에서 이미 Promise.all() 언급했습니다. 그래서 fail-fast가 거부했다면 call first(10)를 간단히 언급하겠습니다. 그러면 모든 것이 즉시 터져 그 거부를 던집니다. 상황에 따라 문제가 될 수도 있고 강력한 기능이 될 수도 있습니다. 예를 들어 2번째 및 3번째 호출은 1번째 호출 성공에 의존하므로 거부하면 두 번 더 호출하여 시간을 낭비할 필요가 없습니다 😁
## 약속 API
따라서 Promise 메서드가 많이 있습니다. you can find on MDN

내 의견으로는 async/await가 있는 주목할만한 것들:
  • Promise.all()
    "일부 컴퓨터에서는 병렬로 실행되거나 어떤 의미에서는 동시에 실행될 수 있지만 다른 컴퓨터에서는 직렬로 실행될 수 있습니다. 이러한 이유로 Promise 실행 순서에 대한 의존성이 없어야 합니다."- MDN related article
    나는 이전에 유사 동시성/병렬성을 언급한 적이 있는데 이 발췌문은 그 이유를 잘 설명하고 있습니다.
  • Promise.race()
    "...method는 iterable의 약속 중 하나가 해당 약속의 값이나 이유를 이행하거나 거부하는 즉시 이행하거나 거부하는 약속을 반환합니다."- MDN related article
  • Promise.any()
    "Promise 객체의 iterable을 취하고 iterable의 Promise 중 하나가 이행되자마자 해당 Promise의 값으로 해결되는 단일 Promise를 반환합니다."- MDN related article
  • 좋은 웹페이지 즐겨찾기