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

推薦する

Reactコンポーネント通信の詳細な説明

目次コンポーネント通信の概要コンテンツ3つの方法まとめコンポーネントコミュニケーション - 父から息...

フロントエンドフレームワーク Vue における親子コンポーネントデータの双方向バインディングの実装

目次1. 親コンポーネントと子コンポーネント間の一方向の値転送1. 親から子への値の受け渡し2. 子...

HTML ウェブページの段落レイアウトと改行

Web ページの外観はレイアウトに大きく左右されます。ページ内に長い段落のテキストがある場合、通常は...

MySQLデータベースについて学びましょう

目次1. データベースとは何ですか? 2. データベースの分類は? 3. データベースとデータ構造の...

JavaScript 配列重複排除ソリューション

目次方法1: set: データ型ではなくデータ構造であり、メンバーは一意である方法2: オブジェクト...

MYSQL での Truncate の使用法の詳細な説明

この記事のガイド: テーブル内のデータを削除するには、削除と切り捨ての 2 つの方法があります。TR...

MySQLの読み書き分離により挿入後にデータが選択されなくなる問題を解決

MySQLは独立した書き込み分離を設定します。コードに次のものを書くと問題が発生する可能性があります...

CSSは左固定と右適応のレイアウト方法を実現します

1. フローティングレイアウト1. 最初に固定幅の div をフロートさせます。ドキュメントフローか...

リクエスト IP の最後のセグメントに基づいてトラフィックを分割するように Nginx を構成する方法

これは主に、場所パラメータのif判断の設定ジャンプです。迂回により、サーバーの負荷と圧力を軽減できま...

HTML ページジャンプのパラメータ渡しの問題

効果は以下のとおりです。ページジャンプボタンをクリックした後 対応する値はページ b で取得できます...

CSS3.0 でネオンボタンアニメーション効果を実装するためのサンプルコード

今日は、CSS 3.0 で実装されたネオン ボタン アニメーション効果を紹介します。効果は次のとおり...

MySQLの3値ロジックとNULLの詳細な説明

目次NULLとは何か2種類のNULLなぜ「= NULL」ではなく「IS NULL」と書く必要があるの...

MySQLデータのバックアップとリカバリの実装方法の分析

この記事では、例を使用して MySQL データのバックアップと復元の方法について説明します。ご参考ま...

XHTML 2.0 新機能プレビュー

<br />ブラウザが次世代のXHTMLを処理できるようになる前に、このよりリッチなコン...

Dockerを使用してMQTTサーバーを構築するプロセスの詳細な説明

1. イメージをプルするdocker pull registry.cn-hangzhou.aliyu...