Promise 기타 고려사항

오픈소스·2022년 3월 24일
0

https://elvanov.com/2597

기타 고려사항

저자는 기타 고려사항 이라지만, 내 입장에선 왜 이제서야 알려주나 하는 생각이 들며, 중요했던 글입니다.

  • executor 내부에서 에러가 throw 된다면 해당 에러로 reject 가 수행됩니다.
  • executor 의 리턴 값은 무시됩니다.
  • 첫 번째 reject 혹은 resolve 만 유효합니다. (두 번째부터는 무시됩니다. 이미 해당 함수가 호출되었다면 throw 또한 무시됩니다.)

일반 OOP에서 class의 constructor가 void이거나 무시되는 것처럼...

async: 비동기 작업을 만드는 손쉬운 방법

  1. 함수에 async 키위드를 붙입니다.
  2. new Promise... 부분을 없애고 executor 본문 내용만 남깁니다.
  3. resolve(value); 부분을 return value; 로 변경합니다.
  4. reject(new Error(…)); 부분을 throw new Error(…); 로 수정합니다.

https://ooeunz.tistory.com/47

  • Just calling
  • Awaiting
  • Returning
  • Return-awaiting

https://javascript.info/async-await

async function f() {
  return 1;
}

f().then(alert); // 1

===

async function f() {
  return Promise.resolve(1);
}

f().then(alert); // 1

,

async function f() {
  await Promise.reject(new Error("Whoops!"));
}

===

async function f() {
  throw new Error("Whoops!");
}

https://developpaper.com/question/how-to-pass-multiple-parameters-in-resolve-in-js-es6-promise/
resolve() can only accept and process one parameter. Extra parameters will be ignored. That’s what spec says.
With array wrap, you can transfer multiple parameters, but the result of resolve is naturally an array.

0개의 댓글