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!