Menguruskan Penggunaan Memori dalam Promise.all
Dalam senario tertentu di mana sejumlah besar janji digunakan, seperti yang ditunjukkan oleh kod yang disediakan, penggunaan memori boleh menjadi isu. Khususnya, isu ini timbul apabila data yang diselesaikan daripada setiap janji tidak diperlukan dan menggunakan sejumlah besar memori.
Untuk menangani masalah ini, adalah disyorkan untuk mengehadkan bilangan janji yang aktif atau dalam penerbangan secara serentak, daripada mempunyai semua 58k janji aktif serentak. Ini boleh dicapai dengan menetapkan had konkurensi kepada X. Apabila janji diselesaikan, yang seterusnya dalam baris gilir boleh dilaksanakan, memastikan bahawa tidak lebih daripada janji X aktif pada bila-bila masa.
Sebagai alternatif, jika data yang diselesaikan tidak diperlukan, ia boleh digantikan dengan nilai mudah untuk meminimumkan penggunaan memori. Contoh kod yang disediakan menunjukkan cara untuk mencapai perkara ini:
const p = backgroundScheduler.getClanProfile(clanTags[i], true).then(data => { return 0; // make resolved value just be a simple number // so other data is now eligible for GC });
Untuk pelaksanaan tersuai pengurusan konkurensi janji, fungsi mapConcurrent boleh digunakan. Ia berulang melalui pelbagai item, melaksanakan fungsi yang mengembalikan janji dan hanya membenarkan maksimum X permintaan dalam penerbangan pada bila-bila masa tertentu.
Dengan menguruskan bilangan janji dalam penerbangan, anda boleh mengurangkan dengan berkesan penggunaan memori sambil masih memastikan pelaksanaan operasi tak segerak dengan cekap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengurangkan Penggunaan Memori Apabila Menggunakan Promise.all dengan Jumlah Janji yang Banyak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!