Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Mendapatkan Teks dengan Cekap daripada Susunan URL Menggunakan Promise.all?

Bagaimana untuk Mendapatkan Teks dengan Cekap daripada Susunan URL Menggunakan Promise.all?

Susan Sarandon
Susan Sarandonasal
2024-10-27 15:10:29939semak imbas

How to Efficiently Retrieve Text from an Array of URLs Using Promise.all?

Cara Memanfaatkan Janji.semua untuk Mendapatkan Susunan URL

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn