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()
するから上のような感想になったんだな。理解。