Promiseで複数の戻り値を返す

Promiseで複数の戻り値を返したくなった

出来ない形

通常通りのイメージで、複数の戻り値を書いてみる。エラーも出てないし、なんだか出来そうだが、二つ目以降の戻り値は undefined となる。

function test1 () {
  return new Promise((resolve, reject) => {
    const a = 1;
    const b = 2;
    resolve(a, b);
  })
}

test1().then((result1, result2) => {
  console.log(result1); // 1
  console.log(result2); // undefined
})

出来る形

複数の戻り値を指定すると、二つ目以降が undefined となってしまうので、複数の戻り値を一つの戻り値にまとめる。配列を使う。

function test1 () {
  return new Promise((resolve, reject) => {
    const a = 1;
    const b = 2;
    resolve([a, b]);
  })
}

test1().then((result) => {
  console.log(result[0]); // 1
  console.log(result[1]); // 2
})

あとがき

そもそも複数の戻り値って、なんでダメなんだろう…

— 追記(10/25)—–
基本的に .then().catch() するから上のような感想になったんだな。理解。

タイトルとURLをコピーしました