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
Mary-Kate Olsenasal
2024-12-11 01:04:09866semak imbas

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;
}));

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!

Kenyataan:
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