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 によるテーブル構造とデータの復元

推薦する

MySQL 8.0 の統計が不正確である理由

序文Oracle であれ MySQL であれ、新バージョンで導入された新機能は、一方では製品の機能性...

Linuxは数字当てゲームのソースコードを実装する

シンプルな Linux 推測ゲームのソースコードゲームのルール:数字当てゲームは通常 2 人でプレイ...

HTML の水平および垂直中央揃えの問題の概要

最近、センタリングの問題に数多く遭遇したので、後で簡単に見つけられるように、時間をかけてそれらを要約...

MySQLクエリキャッシュに関するヒント

目次序文QueryCache の概要クエリキャッシュ構成QueryCache の使用queryCac...

SqlクエリMySqlデータベーステーブル名と説明テーブルフィールド(列)情報

以下では、SQL クエリ ステートメントを使用して、Mysql データベース内のテーブルのテーブル名...

虫眼鏡効果を実現するJavaScript

この記事では、虫眼鏡効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します。...

docker を使用した pxc クラスターのインストールに関する詳細なチュートリアル

目次序文事前準備ディレクトリを作成するcustom.cnf を作成する証明書を作成するpxc クラス...

Vue カプセル化コンポーネント ツール $attrs、$listeners の使用

目次序文$属性例: $listeners (公式説明)使用シナリオ要約する序文複数レベルのコンポーネ...

Linux の操作とメンテナンスの基本 httpd 静的 Web ページ チュートリアル

目次1. ウェアハウスを使用してhttpd lrzsz解凍ファイルを作成する2. ソースコードファイ...

Vue+Echart 棒グラフで疫病データ統計を実現

目次1. まずプロジェクトにechartsをインストールします2. echartsに縦棒グラフテンプ...

Docker+Selenium Grid に基づく技術アプリケーションをテストするためのサンプル コード

Selenium Grid の紹介Selenium Grid のいくつかの新しい機能は、今後リリース...

Reactはページの透かし効果の全プロセスを実現します

目次序文1. 使用例2. 実施プロセス3. コンポーネントコード要約する序文1. cavans では...

PHP 開発環境の構築に関する win10 docker-toolsbox チュートリアル

画像をダウンロード docker プル mysql:5.7 docker pull php:7.2-...

JavaScript のモジュール性の説明

目次序文: 1. コンセプト2. モジュール化の利点3. 複数のスクリプトタグを導入した後の問題1....

MySQL における varchar 型と char 型の違い

目次前述のVARCHAR型VARCHAR適用可能な状況CHAR型テストVARCHAR(5)とVARC...