[解決済み] JavaScript, Node.js: Array.forEachは非同期なのか?
2022-03-23 12:39:07
質問
ネイティブについて質問があります。
Array.forEach
JavaScriptの実装です。非同期で動作するのでしょうか?
例えば、私が呼び出した場合。
[many many elements].forEach(function () {lots of work to do})
これはノンブロッキングになるのでしょうか?
解決方法は?
いいえ、ブロックされています。このような場合は アルゴリズムの仕様 .
しかし、より理解しやすい実装は、以下のサイトで紹介されています。 MDN :
if (!Array.prototype.forEach)
{
Array.prototype.forEach = function(fun /*, thisp */)
{
"use strict";
if (this === void 0 || this === null)
throw new TypeError();
var t = Object(this);
var len = t.length >>> 0;
if (typeof fun !== "function")
throw new TypeError();
var thisp = arguments[1];
for (var i = 0; i < len; i++)
{
if (i in t)
fun.call(thisp, t[i], i, t);
}
};
}
各要素に対して多くのコードを実行する必要がある場合、別のアプローチを使用することを検討する必要があります。
function processArray(items, process) {
var todo = items.concat();
setTimeout(function() {
process(todo.shift());
if(todo.length > 0) {
setTimeout(arguments.callee, 25);
}
}, 25);
}
で呼び出してください。
processArray([many many elements], function () {lots of work to do});
これでは、ノンブロッキングになってしまいます。この例は ハイパフォーマンスJavaScript .
また、次のような方法もあります。 ウェブワーカー .
関連
-
[解決済み】「X-Frame-Options」を「SAMEORIGIN」に設定したため、フレームでの表示を拒否された。
-
[解決済み】 `string.split is not a function` というエラーの原因は何ですか?
-
nullのプロパティinnerHTMLを読み取れません エラーメッセージ
-
OSSアップロードエラーを解決する: net::ERR_SSL_PROTOCOL_ERROR
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?
-
[解決済み] Array.forEachでbreakを呼び出すようなショートサーキット
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
fetch ネットワークリクエストラッパーの説明例
-
JavaScriptの配列共通メソッド解説
-
[解決済み】"フォームが接続されていないため、フォームの送信がキャンセルされました "というエラーの取得について
-
[解決済み】Node.jsで "Cannot find module "エラーを解決するには?
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
[解決済み】 env: node: macにそのようなファイルやディレクトリはありません
-
JavaScriptのStringに関する共通メソッド
-
jq は html ページとデータを動的に分割する。
-
[解決済み】Node.jsとは何ですか?[クローズド]
-
[解決済み】非同期のforEachコールバックがすべて完了した後にコールバックする。