Promise


なぜPromiseを使うのですか?😍(南で確認)


例えば、F 1→F 2→F 3構造のコールバック関数.
F 1は処理を完了し、F 2はコールバックとして動作している.
F 2の関数に問題がある場合、F 2の問題はプログラムのフリーズまたは無限のブロックを引き起こす.
この構成では、F 3は、すべてのコールバックを終了してレンダリングする論理を含むことができるからである.
F 2の関数がブロックされている場合、F 3は実行されません.
これは信頼できるエラー処理が必要です.
ただし、F 1、F 2、F 3のすべてのエラーを処理するには、tryとcatchをそれぞれ関数にバインドする必要があります.
F 1で試す
F 2で試す
F 3のtry
これらはすべて異なるスクリプトを作成する必要があります
さらに、モジュール化関数の場合はさらに悪化します.毒性もあまりよくない.
承諾を使用してこの問題を解決
非同期処理のコールバックセットである承諾オブジェクトを作成して使用します.
このグループで発生したすべてのエラーを食べることで、簡単に処理できます.毒性もいいです.

南で説明を追加する

  • 完了/失敗はエラー
  • に分けられます.
  • の不安定な項目においても再処理が可能であるため、サーバ拡張、論理問題コード
  • を記述することが困難である.
  • を使用してスケジューリングする場合、書き出しプログラムも自動設定されるので、エラーが発生しても3つのインタラクションなどのスケジューリングをうまく実行できます
  • Promis自体はイベントキューに入れる、エラー処理時に
  • を自動的に排除する.
  • 他の切り替え中にスケジュールが間違っていたら後でやってください間違った子
  • 後にしましょう!これを強引に500秒釘付けにしてからやります!500秒後に他のことを処理しているなら、これをやり終わったらやりなさい.可能性
  • プロミスでなければサーバは
  • 死んでしまいます
  • は、Premissではなく、待機および除外機能を備え、ゲイル通信量機能
  • を短縮する.
  • 結論荷重=fromis
  • コールバックとの比較

    const Todo = mongoose.model('Todo', todoSchema);
    
    // callback style
    Todo.find({ }, function(err, todo) {
      if(err) throw err;
      console.log(todo);
    });
    
    // promise style
    Todo.find({})
      .then(todo => console.log(todo))
      .catch(err => console.log(err))

    Test Code


    Promise.all([
      new Promise((resolve) => {
        setTimeout(() => {
          console.log("1");
          resolve(1);
        }, 3000);
      }), // 1
      new Promise((resolve) => {
        setTimeout(() => {
          console.log("2");
          resolve(2);
        }, 2000);
      }), // 2
      new Promise((resolve) => {
        setTimeout(() => {
          console.log("3");
          resolve(3);
        }, 1000);
      }), // 3
    ])
      .then(console.log) // [ 1, 2, 3 ]
      .catch(console.log);