TIL]JavaScript-同期/非同期、promise


🌼 Promise


promiseは、JavaScriptで非同期処理に使用されるオブジェクトです.promisを使用すると、非同期プログラミングを同期プログラミングで処理できます.
promise:承諾には3つの状態があります.promiseオブジェクトは、解析または拒否されたときに実行されるコールバック関数をパラメータとして受け入れるexecutorというコールバック関数を渡さなければなりません.
待機
  • (保留):未履行または拒否の初期状態.
    完了
  • :演算が正常に完了しました.
  • 却下(却下):演算に失敗しました.
  •  // 1.Producer
    const promise = new Promise((resolve, reject) => {
      //doing something heavy work (network,read files...)
      console.log('doing something');
      setTimeout(() => {
        // resolve('ellie);
        reject(new Error('no network'));
      }, 2000);
    });
      
    /* 2. Consumer: then, catch, finally
    then은 promise 객체가 resolve된 결과 값을 다룰 때 사용한다.
    catch는 promise 객체가 reject된 결과 값을 다룰 때 사용한다.
    성공, 실패와 상관없이 무조건 마지막에 실행되는 값을 다를 때 사용한다. */ 
    
    promise
      .then(value => {
        console.log(value);
    })
      .catch(error => {
        console.log(error);
    });  
      .finally(value => {
        console.log('finally');
    });    
      

    🌼 Promiseオブジェクトの利用(取得)


    サーバと通信する際に使用されるfetch()関数は、1番目のパラメータをURLとし、2番目のパラメータをオプションのオブジェクトとする(方法:POST、GET、DELETE...)受信後、通信結果に基づいてPromiseタイプのオブジェクトを返します.
    /* fetch 함수는 서버로부터 데이터를 주고 받을 때 사용하는 함수이다.
    method로 GET을 사용할 경우, 생략이 가능하다. */
    
    function logName() {
      fetch('http://example.com/movies.json', {
        method: "GET"
      })
      .then(res => res.json())
      .then(data => console.log(data));
    }
    ソース-YOUTUBE(DREAMコード)