非同期Promiseメソッド


注釈サンプルコード
const f1 = (message) => {
  console.log(message);
  return new Promise((res, rej) => {
    setTimeout(() => {
      res('1번 주문');
    }, 3000);
  });
};

const f2 = (message) => {
  console.log('2번', message); // 2번 1번 주문
  return new Promise((res, rej) => {
    setTimeout(() => {
      res('2번 주문');
    }, 1000);
  });
};

const f3 = (message) => {
  console.log('3번', message); //3번 2번 주문
  return new Promise((res, rej) => {
    setTimeout(() => {
      res('3번 주문');
    }, 2000);
  });
};

📌Promise.all

  • 一労永逸、一労永逸
  • 一つのメッセージもerrであればエラーが発生する
  • Promise.allは、配列内のすべての値の実行(または最初の拒否)を待機します.
  • 巡回可能オブジェクトに非Premiss値が含まれている場合は無視するが、実行時に結果配列に含まれる
  • promise

    console.time('xx');
    Promise.all([f1(), f2(), f3()]).then((res) => {
      console.log(res);
      console.timeEnd('xx'); // 대략 3초
    });
    function pickAll() {
      return Promise.all([getApple(), getBanana()]).then((fruits) =>
        fruits.join('+')
      );
    }
    
    pickAll().then(console.log);
    const readAllUsers = () => {
    
      return new Promise((res, rej) => {
        let one = getDataFromFilePromise(user1Path).then((data) =>
          JSON.parse(data)
        );
        let two = getDataFromFilePromise(user2Path).then((data) =>
          JSON.parse(data)
        );
        Promise.all([one, two]).then((data) => res(data));
      });
    };

    async

    async function order() {
      try {
        const result = await Promise.all([f1(), f2(), f3()]);
        console.log(result);
      } catch (e) {
        console.log(e);
      }
    }
    console.log('end');
    
    async function order2() {
      let promiseDummy = [Promise 객체, Promise 객체, Promise 객체]
    
      return Promise.all(promiseDummy)
    }

    📌Promise.race

  • 1位で終わっても
  • 容量の大きい画像を複数使用する場合、高速ロードされた画像を1つ表示するため
  • console.time('xxx');
    Promise.race([f1(), f2(), f3()]).then((res) => {
      console.log(res);
      console.timeEnd('xxx'); // 대략 1초
    });

    📌Promise.reject


    📌Promise.resolve