9月5日非同期概念総括(block、callback、promise、async)


blocking vs non-blocking


ブロック(同期)

  • 即時起動
  • 要求の結果は同時に発生する(同期)
  • すべてを1つの関数で制御
  • ノンブロッキング(非同期)

  • 後ほど再試行
  • 要求が同時に結果を生成しない(非同期)
  • 1つの関数はすべてを制御できません
  • 非同期Calback


    callback関数を使用して、関数内の他の関数を制御します.
    他の関数を制御することで非同期で使用できます
  • すべてのcallbackは非同期関数ではありません
    非同期性はmake by designによって実現され、古典的な方法を用いて実現される
  • 典型的な非同期方法
  • event handler,ネットワーク(通信)リクエスト,fs module(node.jsメソッド)
  • setTimeout, fs.readeFile, fetch
    上記の方法を用いる場合、callback関数はbar同期関数
  • として用いられる
    短所
    毒が弱い

    Promise


    Promiseより効率的な非同期処理のために設計されたES 6構文
    非同期の利点を十分に活用するには、非同期で作成する必要があります.
    問題Promise実行関数が持つ2つのパラメータresolveとexecuteはそれぞれ何を意味しますか?
  • resolveが成功した場合、promise
  • を返します.
  • rejectが失敗した場合、promise
  • を返します.
  • promiseパラメータとして関数を受け入れる
  • その関数はresolveおよびrejectをパラメータとして受け入れます
  • Promise有then及びcatchの方法
  • 特別事項
  • new Promise 객체는 promise를 리턴한다
  • Promise.prototype.then , Promise.prototype.catch는 Promise를 리턴한다
  • promiseオブジェクトはpromiseを返すので、値をエクスポートするために、
    その後(resolve)またはcatch(拒否)します.
    そして()メソッド
    Promiseを返し、パラメータとして2つのコールバック関数を受け入れます.
    一つはPromise実行時のコールバック関数、もう一つは拒否時のコールバック関数
    then(resolve의 인자) => {
      //성공 후 할일
      }
    catch()メソッド
  • The catch() method returns a Promise and deals with rejected cases only
  • エラー時にエラーを受信してエラーを処理
  • パラメータは、問題解決(Problem Resolution)関数と拒否(Reject)関数に渡すことができます.この場合、反転係数はどのように使用しますか?
  • resolveのパラメータはthen法により得ることができる
  • rejectのパラメータはcatch法により得ることができる
  • 問題new Promise()が生成したPromise 인스턴스にはどのような方法がありますか?それぞれどんな用途がありますか?
  • then(),解析パラメータを受け取り,Promise
  • に戻る.
  • catch(),拒否されたパラメータを受け入れ、Promise
  • に戻る
    質問Promiseprototype.では、メソッドは何を返しますか?
    質問Promiseprototype.catchメソッドは何を返しますか?
    どちらの方法もPromiseに戻ります
    Promiseの3つの状態はそれぞれ何なのか、何の意味があるのかを質問します.
  • 대기(pending):初期未履行または拒否
    未解決または却下の場合
    コードはまだ実行中
  • 이행(fulfilled):演算成功完了
  • 거부(rejected):演算失敗
  • const 프로미스인스턴스 = new Promise(프로미스실행함수)
    .then => 프로미스를 리턴한다
      .then의 실행함수의 인자로 fulfilled된 결과가 전달 된다
      즉, resolve의 첫번째 인자
    .catch => 프로미스를 리턴한다
      .catch의 실행함수의 인자로 rejected된 결과가 전달된다
      스크립트 실행이 중간에 멈추는 것을 막는다
      이렇게 에러를 catch하는 것을 에러핸들링이라고 한다
    Promise instance=>Promiseを返します
    resolve,reject=>Promise戻り
    .then, .catch=>Promise戻り
    これでPromiseに戻ってPromiseの状態を確認します
  • Promisesinstance=>完了:解析パラメータ
  • Promiseinstance.その後(関数)=>fufilled:未定義//値
  • をエクスポート
    エラーが発生した場合、Promiseステータスは拒否されます.catch로 받으면 Promise상태가 fulfilled로 받아올수 있다(エラーハンドル)

    Promise All


    複数のPromiseを処理する必要がある場合は複数回使用できますが、Promise allを使用して処理できます.
    const promiseArr = [new Promise(프로미스실행함수), new Promise(프로미스실행함수2)]
    // promiseArr = [프로미스인스턴스, 프로미스인스턴스]
    Promise.all(promiseArr) // Promise all 사용
    promiseArr는 fulfilled상태이며, 프로미스인스턴스가 (then으로 사용한거 처럼) 해결이 된 상태로 배열에 담긴다
    承諾Arrは完了状態であり、Promisインスタンス(後述する)によって解決状態で配列される.
    すなわち,配列セットで解決できる.
    Promise.all(promiseArr).then(([promiseArr의 첫번째 요소 프로미스인스턴스를 then 한 값, promiseArr의 두번째 요소 프로미스인스턴스를 then 한 값]) => {})

    async, await


    asyncキーワードを使用する関数の内部
  • waitは存在しません-完了したprimise
  • await-結果値(解析パラメータ)
  • const asyncFunc = async => {
      const await이 없는 경우 = new Promise(프로미스실행함수);
      const await이 있는 경우 = await new Promise(프로미스실행함수);
    }
    awaitキーワードの後に現れる関数実行は、どのタイプを返す場合にのみ意味がありますか?
  • Promise
  • awaitキーを使用すると、どの値が返されますか?
    Promiseのresolveのパラメータ、すなわち結果値、Promiseのthenで得られた値