Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Cekap Mengambil Data daripada Berbilang URL dengan Promise.all?

Bagaimana untuk Cekap Mengambil Data daripada Berbilang URL dengan Promise.all?

Patricia Arquette
Lepaskan: 2024-10-29 05:24:02
asal
250 orang telah melayarinya

How to Efficiently Fetch Data from Multiple URLs with Promise.all?

Menakluki Berbilang Pengambilan URL dengan Promise.semua

Dalam bidang pengaturcaraan tak segerak, Promises menawarkan mekanisme yang berkuasa untuk mengendalikan tugas tak segerak seperti mengambil data daripada berbilang URL. Seperti yang anda temui, cuba memasukkan kes penggunaan ini ke dalam paradigma Promise.all boleh menjadi batu penghalang.

Mari kita rungkai penyelesaian percubaan anda:

var promises = urls.map(url => fetch(url));
var texts = [];
Promise.all(promises)
  .then(results => {
     results.forEach(result => result.text()).then(t => texts.push(t))
  })
Salin selepas log masuk

Kaedah ini mengalami masalah kecacatan penting: forEach tidak mengembalikan tatasusunan mahupun Promise, menjadikan anda dalam kekosongan janji tanpa cara untuk mengakses teks yang diambil.

Untuk membetulkannya, Promise.all mesti digunakan dua kali, sekali untuk mengambil URL dan sekali untuk mengekstrak teks daripada respons:

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 menyelaraskan proses dengan menggabungkan pengambilan dan perolehan teks ke dalam satu langkah:

Promise.all(urls.map(url =>
    fetch(url).then(resp => resp.text())
)).then(texts => {
    …
})
Salin selepas log masuk

Untuk lebih lanjut penyelesaian ringkas, terima kuasa async/waiit:

const texts = await Promise.all(urls.map(async url => {
  const resp = await fetch(url);
  return resp.text();
}));
Salin selepas log masuk

Pendekatan ini memberi anda keupayaan untuk mengendalikan berbilang pengambilan URL dengan cekap, membolehkan anda membina objek yang diingini yang mengandungi teks yang diekstrak.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mengambil Data daripada Berbilang URL dengan 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