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

推薦する

jquery+springbootでファイルアップロード機能を実現

この記事の例では、ファイルアップロード機能を実現するためのjquery+springbootの具体的...

innerHTML アプリケーション

ブランクのブログ: http://www.planabc.net/ innerHTML プロパティは...

WeChatアプレットが連携メニューを実現

最近はコース設計を実現するために、フロントエンドも少しやっています。今日はいくつかの機能を実現するた...

Linux 環境に nginx をインストールするチュートリアル

目次1. 必要な環境をインストールする //gccをインストールする yum で gcc-c++ を...

HTML チュートリアル: よく使われる HTML タグのコレクション (4)

関連記事:初心者が学ぶ HTML タグ (3)導入された HTML タグは、必ずしも XHTML 仕...

Vueカスタムディレクティブの詳細

目次1. 背景2. ローカルカスタム指示3. グローバルカスタム指示4.1 カスタムコマンドフック関...

React コンポーネント間で通信する 3 つの方法 (シンプルで使いやすい)

目次1. 親子コンポーネント通信2. クロスレベルコンポーネント通信1. レイヤーごとに値を渡す2....

MYSQL 5.6 スレーブレプリケーションの展開と監視

MYSQL 5.6 スレーブレプリケーションの展開と監視MYSQL 5.6 のインストールと展開 #...

MySQL NULLデータ変換方法(必読)

MySQL を使用してデータベースをクエリし、左結合を実行すると、関連付けられたフィールドの一部に...

ウェブサイトの画像にグレー効果を加える3つの方法

私はグレースケールの画像の方が芸術的に見えると思うので、いつもグレースケールの画像を好んで使っていま...

202 無料の高品質 XHTML テンプレート (1)

ここで 123WORDPRESS.COM はこれらのテンプレートの最初の部分を紹介します。各テンプレ...

JavaScriptのモジュール性を理解する方法

目次1. ブラウザのサポート2.エクスポートモジュールのエクスポート3. モジュールをインポートする...

JavaScript の基本変数

目次1. 変数の概要1.1 変数のメモリへの保存1.2 変数の使用1. 変数を宣言する2. 譲渡3....

MySQLデータベースのトランザクションとインデックスの詳細な説明

目次1. 事務:取引の 4 つの主な特徴:同時トランザクションはどのような問題を引き起こしますか? ...

vue-qr を使用して Vue の QR コードを生成する方法について深く理解する

目次npm ダウンロードステップ(1)輸入(2)vue-qrパラメータ例要約する「QRコード」の英語...