Rumah > hujung hadapan web > tutorial js > Bagaimanakah saya boleh menggunakan `Promise.all` untuk mendapatkan semula data daripada tatasusunan URL dan mencipta tatasusunan kandungan teks yang sepadan?

Bagaimanakah saya boleh menggunakan `Promise.all` untuk mendapatkan semula data daripada tatasusunan URL dan mencipta tatasusunan kandungan teks yang sepadan?

Mary-Kate Olsen
Lepaskan: 2024-10-29 02:38:02
asal
404 orang telah melayarinya

How can I use `Promise.all` to retrieve data from an array of URLs and create a corresponding array of text content?

Menggunakan Promise.all untuk Mendapatkan Susunan URL

Mendapatkan semula data daripada pelbagai sumber boleh menjadi tugas biasa apabila berurusan dengan permintaan web. Promise.all ialah alat berguna dalam JavaScript yang membenarkan pelaksanaan berbilang operasi async serentak dan menggabungkan keputusannya menjadi satu Promise.

Masalahnya:
Bayangkan anda mempunyai tatasusunan URL dan bertujuan untuk mencipta objek yang mencerminkan struktur tatasusunan URL tetapi dengan kandungan setiap fail teks URL.

var urls = ['1.txt', '2.txt', '3.txt']; // These files contain "one", "two", "three" respectively.
var result = ['one', 'two', 'three']; 
Salin selepas log masuk

Mendekati dengan Promise.all:
Apabila cuba menyelesaikan masalah ini menggunakan Promise.all pada mulanya, anda mungkin menghadapi kesukaran. Mari kita periksa pendekatan yang cacat:

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

Di sini, Promise.all digunakan pada tatasusunan Janji yang mewakili permintaan pengambilan. Walau bagaimanapun, pendekatan ini gagal menghasilkan tatasusunan ['satu', 'dua', 'tiga'] yang dikehendaki seperti yang dimaksudkan. Untuk membetulkannya, pertimbangkan penyelesaian yang diperhalusi ini:

Promise.all(urls.map(u => fetch(u))).then(responses =>
  Promise.all(responses.map(res => res.text()))
).then(texts => {
  …
});
Salin selepas log masuk

Kod ini memulakan permintaan pengambilan untuk semua URL, diikuti dengan memproses respons untuk mendapatkan semula kandungan teks setiap URL. Hasilnya ialah tatasusunan nilai teks yang boleh diproses selanjutnya. Sebagai alternatif, kod tersebut boleh dipermudahkan menggunakan ciri JavaScript moden:

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

Di sini, sintaks tak segerak/menunggu digunakan untuk mengendalikan operasi tak segerak dengan lebih ringkas.

Menggunakan Janji.semuanya dengan bijak bersama-sama dengan teknik ini, anda boleh mengambil dan memproses data dengan berkesan daripada pelbagai URL, membuka jalan untuk tugasan manipulasi data seterusnya.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan `Promise.all` untuk mendapatkan semula data daripada tatasusunan URL dan mencipta tatasusunan kandungan teks yang sepadan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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