Promise
1284 ワード
json形式のデータを外部からロードする場合はpromiseタイプと呼ばれ,先行学習が必要である.
JSはもともとコールバック関数を用いて非同期処理を行っていたが,コールバック関数には2つの欠点があった.
非同期関数の処理結果を返すと、順序が保証されないため、後続の処理はできません.したがって,非同期関数の処理結果はコールバック関数内で処理する必要があり,この場合コールバックhellが発生する.
2つ目はエラー処理の問題です
次の場合、settimeoutが発生するとすぐに呼び出しスタックから削除され、tick関数が実行されます.実行後の場合、settimeoutは呼び出しスタックにないため、コールバック関数の呼び出し者ではありません.
したがって、settimeoutで発生したエラーはcatch文によってキャプチャされないため、プロセスは終了します.(了解したら再修正が必要…)
保留(実行前)
完了(成功):resolveを呼び出す
拒否(失敗):拒否の呼び出し
固定(実行後)
次に、2つのコールバックパラメータ(成功時、失敗時)を受け入れ、promiseに戻ります.
catch:異常が発生した場合、promiseが呼び出され、返されます.
しかし、asyncは、待ち方が好きらしい.
JSはもともとコールバック関数を用いて非同期処理を行っていたが,コールバック関数には2つの欠点があった.
コールバック関数の2つの欠点
非同期関数の処理結果を返すと、順序が保証されないため、後続の処理はできません.したがって,非同期関数の処理結果はコールバック関数内で処理する必要があり,この場合コールバックhellが発生する.
2つ目はエラー処理の問題です
次の場合、settimeoutが発生するとすぐに呼び出しスタックから削除され、tick関数が実行されます.実行後の場合、settimeoutは呼び出しスタックにないため、コールバック関数の呼び出し者ではありません.
したがって、settimeoutで発生したエラーはcatch文によってキャプチャされないため、プロセスは終了します.(了解したら再修正が必要…)
try {
setTimeout(() => { throw new Error('Error!'); }, 1000);
} catch (e) {
console.log('에러를 캐치하지 못한다..');
console.log(e);
}
Promiseプロセス
保留(実行前)
完了(成功):resolveを呼び出す
拒否(失敗):拒否の呼び出し
固定(実行後)
Promiseの後続方法
次に、2つのコールバックパラメータ(成功時、失敗時)を受け入れ、promiseに戻ります.
catch:異常が発生した場合、promiseが呼び出され、返されます.
Promiseは以下の2つの方法で処理する
しかし、asyncは、待ち方が好きらしい.
// then 사용
fetch.get('url')
.then((res) => res.json)
.then((json) => console.log(json))
//async await 사용
const getData = async () => {
const res = await fetch.get(url)
console.log(res);
}
Reference
この問題について(Promise), 我々は、より多くの情報をここで見つけました https://velog.io/@aptakqmf12/Promiseテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol