Rumah >hujung hadapan web >tutorial js >Adakah Array.forEach Asynchronous dalam JavaScript dan Node.js?
Array.forEach Asynchronicity dalam JavaScript dan Node.js
Array.forEach ialah kaedah JavaScript terbina dalam yang melaksanakan fungsi panggil balik untuk setiap elemen dalam tatasusunan. Soalan biasa timbul: adakah Array.forEach berkelakuan tidak segerak?
Jawapan: Tidak, Array.forEach menyekat. Ini bermakna ia dilaksanakan secara serentak, bermakna enjin JavaScript akan menunggu fungsi panggil balik selesai dilaksanakan sebelum beralih ke elemen seterusnya dalam tatasusunan.
Butiran Pelaksanaan:
Spesifikasi MDN untuk Array.forEach memberikan pemahaman yang lebih jelas tentang pelaksanaannya:
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); } }; }
Dalam pelaksanaan ini, fungsi panggil balik dipanggil serentak untuk setiap elemen dalam tatasusunan.
Alternatif Tidak Menyekat:
Jika anda memerlukan pelaksanaan tak segerak bagi sejumlah besar elemen, anda boleh melaksanakan algoritma tersuai:
function processArray(items, process) { var todo = items.concat(); setTimeout(function() { process(todo.shift()); if(todo.length > 0) { setTimeout(arguments.callee, 25); } }, 25); }
Pendekatan ini menggunakan tak segerak JavaScript nature dengan menggunakan setTimeout() untuk menjadualkan pelaksanaan fungsi panggil balik.
Pilihan Asynchronous Lain:
Atas ialah kandungan terperinci Adakah Array.forEach Asynchronous dalam JavaScript dan Node.js?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!