JS ES6 非同期ソリューション

JS ES6 非同期ソリューション

最初にコールバック関数を使用する

​ 当初はjsに明確な公式仕様がなかったため、各種サードパーティライブラリにカプセル化された非同期関数内で渡されるコールバック関数内のパラメータの仕様が明確でなく、各パラメータの意味が明確でなく、使い勝手が悪かった。

しかし、ノードには明確な仕様がある

ノード内のコールバック モード:

1. すべてのコールバック関数には2つのパラメータが必要です。最初のパラメータはエラーを示し、2番目のパラメータは結果を示します。

2. すべてのコールバック関数は関数の最後のパラメータである必要があります

3. すべてのコールバック関数は属性として表示できない

es6 非同期処理モデル

Es6 の登場後、非同期処理の仕様と、すべての非同期シナリオに適した処理モデルが正式に提案されました。モデルには次の機能があります:

  • 不安定な段階と安定した段階の 2 つの段階。
  • 3 つの状態: 保留中、解決済み、拒否
  • 常に未解決ステージから解決済みステージにプッシュし、解決済みステージのステータスは変更されません。

タスクが解決された状態になった後、後続の処理が必要になる場合があります。

  • 解決後の処理を「解決可能」と呼ぶ。
  • 拒否されたキャッチ可能な後続の処理をキャッチ可能と呼ぶ。

この非同期モデルに合わせたAPI: promise

プロミスの使い方

コピー

const task = new Promise((resolve, deny) => {     
    // 保留中のタスク ステージのコード // すぐに実行 console.log("100 メートル長距離走を開始します");  
    タイムアウトを設定する(() => {  
       もし(Math.random() > 0.5){  
           // 成功: 完了 // 成功にプッシュする resolve("finished");  
       } それ以外 {  
           // 失敗: 足の骨折 // 失敗までプッシュする decline("足の骨折");  
       }  
    }, 1000)
});
タスク.then((結果) => {
  console.log(結果);
}).catch((エラー) => {
  コンソール.log(エラー);
})

1 秒後、タスクは解決済みにプッシュされ、後続の処理は then または catch で処理されます。

知らせ

保留中のステータス = > 拒否されたステータス:

コピー

1. 通話拒否

2. コード実行エラー

3. 手動でエラーをスローする

後続の処理関数は非同期である必要があり、マイクロ キューに配置されます。

js 実行スタックがクリアされた後、マイクロ キュー内のタスクが最初に実行されます。マイクロ キュー内のタスクがクリアされた後、マクロ キュー内のタスクが実行されます。

  • マクロタスクキューには、setTimeout、setInterval、setImmediately、I/O、UIレンダリングが含まれます。
  • Microtask キューには、promise、process.nexttick、Object.observe (現在は使用されていません)、Mutation.observe が含まれます。

async await は、es7 で追加された promise の構文糖衣です。これについて学ぶこともできます。この記事では、promise の概要のみを説明します。習得すべき詳細は他にもたくさんあります。

上記は JS ES6 非同期ソリューションの詳細です。ES6 非同期ソリューションの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • JSでES6クラスの使い方をすぐにマスター
  • JS ES6 変数分割代入の詳細な説明
  • JS ES6 スプレッド演算子の魔法のような使い方
  • JS ES6における構造化分解についてお話しましょう
  • ES6 での Javascript 構造化分解の実装
  • JavaScript の ES6 仕様における let と const の使い方と違い
  • 実用的な JS 開発の問題を解決するための 24 の ES6 メソッド (要約)
  • JavaScript ES6クラスの実装原理の詳細な説明
  • JavaScript における ES6 プロキシの具体的な使用法
  • JS ES6コーディング標準の詳細な説明

<<:  意外と知らないLinuxのSSHコマンドの使い方7選を徹底解説

>>:  InnoDB タイプの MySql によるテーブル構造とデータの復元

推薦する

CSS3は、変換変形とイベントを組み合わせて扇形のナビゲーションを完成させます。

この場合、transition という単語を間違って書いたため、午後中ずっとそれに取り組みました。本...

0.1秒の価値!フロントエンドのウェブページの高速化の問題について簡単に説明します

私が現在の仕事の面接を受けたとき、リーダーが真剣にこう言っていたのを覚えています。「今の世の中はイン...

MySQL 5.7 に組み込まれているストレス テストの mysqlslap コマンドと構文の詳細な説明

序文mysqlslap は、MySQL サーバーへのクライアント負荷をシミュレートし、各ステージの時...

効率化に役立つ 20 の CSS コーディングのヒント (並べ替え)

この記事では、主要な CSS ウェブサイトで推奨されている 20 個の便利なルールとベスト プラクテ...

Vue パッケージ化後の空白ページの解決策

1. vue-cli がプロジェクト パッケージを作成した後にページが空白になる問題の解決方法コマン...

JavaScript の構造化代入の一般的なシナリオと例 5 つ

目次序文1. データを抽出する2. エイリアス値3. 動的プロパティ4. オブジェクトの分解における...

MySQL5.7.17 winx64 インストール バージョン構成方法 Windows Server 2008 R2 でのグラフィック チュートリアル

参考までに、Winでmysql5.7をインストールします。具体的な内容は次のとおりです。 @Auth...

jQuery エディタ プラグイン tinyMCE の使い方

簡略化されたファイル サイズを変更し、サンプルをダウンロードします。ファイルをローカル コンピュータ...

メンテナンス可能なJSコードの書き方を教えます

目次保守可能なコードとは何ですか?コード規約1. 読みやすさ2. 変数と関数の命名3. 透過的な変数...

vue3 のさまざまなファイルタイプのプレビュー機能の例

目次序文1. オフィス文書の種類のプレビュー2. PDF形式のプレビュー3. 画像の種類4. ビデオ...

Angular構造ディレクティブモジュールとスタイルの詳細な説明

目次1. 構造指示モジュールforRoot()を書く3. スタイルの定義ドラッグ時の順序を調整するに...

postcss-pxtorem モバイル適応の実装

コマンドを実行してプラグインpostcss-pxtoremをインストールします npm インストール...

HTML 特殊文字エンコーディング CSS3 コンテンツに関する簡単な説明:「私は特別なシンボルです」

プロジェクトで使用されている特殊文字とアイコンHTMLコードXML/HTML コードコンテンツをクリ...

WeChatアプレットのスクロールビューは、プルアップ時にデータの読み込みを重複させるソリューションを実装しています。

WeChat アプレットのスクロール ビューでは、プルアップして読み込むときにバグが多く発生します...