Promise


json形式のデータを外部からロードする場合はpromiseタイプと呼ばれ,先行学習が必要である.
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);
    }