Pomise
非同期作業において、(例:ネットワーク要求、ファイル読み取り)が完了したら、結果を返すという Promise(約束) をするObjectです。
Promiseの状態
状態 | 説明 |
---|---|
Pending | まだ作業中 |
Fulfilled | 作業成功 |
Rejected | 作業失敗 |
フローチャート
1.functions.map(fn => fn()
2.Promise.all()
Code
type Fn<T> = () => Promise<T>
function promiseAll<T>(functions: Fn<T>[]): Promise<T[]> {
return Promise.all(functions.map(fn => fn()));
};
/**
* const promise = promiseAll([() => new Promise(res => res(42))])
* promise.then(console.log); // [42]
*/
Promise.allSettled()
Promise.allSettled()を使うと、全部の結果をReturnするので、失敗があっても問題ないです。
Promise.allSettled(functions.map(fn => fn()))
.then(console.log);
✅ 実行結果
[
{ "status": "fulfilled", "value": 1 },
{ "status": "rejected", "reason": "Error!" },
{ "status": "fulfilled", "value": 3 }
]
Promise.all()
は 1つでも失敗するとすべて失敗になる
Promise.allSettled()
は 成功したものと失敗したものを分けて結果を返す