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

Susan Sarandon
Lepaskan: 2024-10-27 15:10:29
asal
1032 orang telah melayarinya

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 => {
    …
})
Salin selepas log masuk

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 => {
    …
})
Salin selepas log masuk

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();
}));
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan