JS ループで await を使用するとどのような「化学反応」が起こるかについて話しましょう
この記事は、JavaScript ループに関する関連知識を提供します。主に、js ループでの await の使用方法と結果の分析について説明します。興味のある友人は、ぜひ読んでみてください。すべての人に役立つことを願っています。ヘルプ。
序文
この質問はどのようにして生じたのでしょうか?ある日、非同期の知識について学習しているときに、次の質問に遭遇しました。Promise を使用して配列の値を毎秒出力します。
const arr = [1, 2, 3] arr.reduce((pre, cur) => { return pre.then(() => { return new Promise((resolve, reject) => { setTimeout(() => { resolve(console.log(cur)) }, 1000); }) }) }, Promise.resolve())
このコードは非常に理解しやすく、
Promise.resolve().then(() => { return new Promise((resolve, reject) => { setTimeout(() => { resolve(console.log(1)) }, 1000); }) }).then(() => { return new Promise((resolve, reject) => { setTimeout(() => { resolve(console.log(2)) }, 1000); }) }).then(() => { return new Promise((resolve, reject) => { setTimeout(() => { resolve(console.log(3)) }, 1000); }) })
と同等です。これを読んで、ループで値を出力するたびに 1 秒停止すれば解決するのではないかと思い、次のコードを思いつきました。
const arr = [1, 2, 3] const sleep = (ms) => { return new Promise((resolve, reject) => { setTimeout(() => { resolve() }, ms) }) } for (let i = 0; i < arr.length; i++) { console.log(arr[i]); await sleep(1000) }
印刷結果も一貫しています。予想通り、私はここで最初の質問をしました: await は async で使用する必要はありませんか?ここだけでどうやって使うことができるのでしょうか? (信じられない場合は、ブラウザのコンソールにコードを入力してみてください)
次に、for を forEach に変更しましたが、効果がまったく達成されていないことがわかりました。 forEach で失敗しますか?
arr.forEach(async item => { console.log(item); await sleep(1000) })
これら 2 つの質問から、答えを探して勉強してください。
for ループの await
#async/await を学習していたときに、await は async でのみ使用できるという文があったことを覚えています。実際、この文はそれは何の問題もありません。では、なぜ直接前に await を書くことができるのでしょうか? ブラウザのコンソールに直接書いているからです。エディタでコードを書くときは、非同期の<script> const arr = [1, 2, 3] const sleep = (ms) => { return new Promise((resolve, reject) => { setTimeout(() => { resolve() }, ms) }) } const logByOneSecond = async () => { for (let i = 0; i < arr.length; i++) { console.log(arr[i]); await sleep(1000) } } logByOneSecond() </script>
にすることができます。
const logByForof = async () => { for (const item of arr) { console.log(item); await sleep(1000) } } logByForof()
const logByWhile = async () => { let i = 0 while (i !== arr.length) { await sleep(1000) console.log(arr[i]); i++ } } logByWhile()
await in the forEach ループ
As at begin, in forEach には期待される効果はありません; まず第一に、結果が得られます: forEach の async と await は無効です。 私が見た説明は次のとおりです。- JavaScript の forEach は Promise の認識をサポートしておらず、async と await もサポートしていないため、 forEach で await を使用することはできません。
- map/forEach は関数を実行するためにコールバックと組み合わせて内部的に使用されます。await はコールバックの実行を待ちません。
- forEach はのみサポートします同期コード
while(index < arr.length){ callback(item, index) }
async ()=>{ await sleep(1000); } async ()=>{ await sleep(1000); } async ()=>{ await sleep(1000); }
概要
ループ内での async/await の使用を確認しました通常の for ループの場合、while、for-in、for-of などを含むすべての await はシリアルに呼び出され、安心して使用できますが、forEach、map、filter、reduce などのコールバックを伴う配列メソッドでは、 、などは副作用が多いのでawaitは使わない方が良いです。 [推奨学習:JavaScript 上級チュートリアル]
以上がJS ループで await を使用するとどのような「化学反応」が起こるかについて話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

JavaScript は Web 開発で広く使用されているプログラミング言語であり、WebSocket はリアルタイム通信に使用されるネットワーク プロトコルです。 2 つの強力な機能を組み合わせることで、効率的なリアルタイム画像処理システムを構築できます。この記事では、JavaScript と WebSocket を使用してこのシステムを実装する方法と、具体的なコード例を紹介します。まず、リアルタイム画像処理システムの要件と目標を明確にする必要があります。リアルタイムの画像データを収集できるカメラ デバイスがあるとします。
