Pertimbangkan senario ini: anda mempunyai tatasusunan URL dan keinginan untuk mendapatkan objek dengan tatasusunan teks yang sepadan daripada fail di URL tersebut. Fungsi Promise.all menyediakan pendekatan yang mudah untuk mengendalikan tugas ini.
Pada mulanya, kod yang anda cuba menggunakan Promise.all untuk mendapatkan semula janji bagi setiap URL. Walau bagaimanapun, panggilan seterusnya kepada keputusan.forEach boleh menyebabkan kekeliruan. Fungsi ini mencetuskan panggilan balik untuk setiap elemen, menghasilkan tatasusunan nilai yang tidak ditentukan.
Pendekatan yang betul melibatkan penggunaan Promise.all dua kali. Contoh pertama mengambil respons daripada URL, manakala yang kedua menukarkan respons kepada teks dan mengembalikan tatasusunan teks ini.
Promise.all(urls.map(u=>fetch(u))).then(responses => Promise.all(responses.map(res => res.text())) ).then(texts => { … })
Sebagai alternatif, anda boleh memudahkan kod dengan mendapatkan teks daripada respons secara terus :
Promise.all(urls.map(url => fetch(url).then(resp => resp.text()) )).then(texts => { … })
Dengan sintaks tak segerak/menunggu, kod menjadi lebih ringkas:
const texts = await Promise.all(urls.map(async url => { const resp = await fetch(url); return resp.text(); }));
Dengan menggunakan pendekatan ini, anda boleh mengambil pelbagai URL dengan berkesan dan mendapatkan objek dengan nilai teks yang sepadan.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Teks dengan Cekap daripada Susunan URL Menggunakan Promise.all?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!