Menggunakan Async/Await dengan Array.map
Apabila cuba menggunakan async/wait dengan Array.map, pengguna kerap menghadapi ralat yang serupa kepada yang berikut:
"Taip 'Janji
Ralat ini timbul kerana fungsi menunggu mesti menyelesaikan Janji. Walau bagaimanapun, Array.map biasanya mengembalikan tatasusunan Janji dan bukannya Janji tunggal.
Penyelesaian
Untuk menangani isu ini, tukar tatasusunan Janji yang dikembalikan oleh Array. petakan kepada satu Janji menggunakan Promise.all. Promise.all diselesaikan hanya apabila semua Promise dalam hujah boleh lelarnya telah diselesaikan.
Berikut ialah versi diubah suai kod bermasalah:
const arr = [1, 2, 3, 4, 5]; const results: number[] = await Promise.all(arr.map(async (item): Promise<number> => { await callAsynchronousOperation(item); return item + 1; }));
Dengan menggunakan Promise.all, susunan Janji diselesaikan sebagai Janji tunggal, membolehkan menunggu berfungsi dengan betul, menghapuskan "Jenis 'Promise
Pilihan Tambahan
Bergantung pada kes penggunaan tertentu, pertimbangkan untuk menggunakan Promise.allSettled, Promise.any, atau Promise.race dan bukannya Promise.all. Walau bagaimanapun, Promise.all biasanya merupakan pilihan yang paling sesuai dalam situasi seperti yang diterangkan di atas.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan 'Taip 'Janji[]' tidak boleh diberikan untuk menaip 'nombor[]'' Apabila Menggunakan Async/Await dengan Array.map?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!