Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menyelesaikan 'Taip 'Janji[]' tidak boleh diberikan untuk menaip 'nombor[]'' Apabila Menggunakan Async/Await dengan Array.map?

Bagaimana untuk Menyelesaikan 'Taip 'Janji[]' tidak boleh diberikan untuk menaip 'nombor[]'' Apabila Menggunakan Async/Await dengan Array.map?

Mary-Kate Olsen
Lepaskan: 2024-12-11 01:04:09
asal
864 orang telah melayarinya

How to Resolve

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[]' ialah tidak boleh diberikan untuk menaip 'nombor[]'. Taipkan 'Janji'. tidak boleh diberikan untuk menaip 'nombor'."

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

Dengan menggunakan Promise.all, susunan Janji diselesaikan sebagai Janji tunggal, membolehkan menunggu berfungsi dengan betul, menghapuskan "Jenis 'Promise[]' tidak boleh diberikan untuk menaip ralat 'number[]'".

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!

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