Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mencegah Permintaan API Berlebihan Apabila Menggunakan Async/Await dalam JavaScript?

Bagaimanakah Saya Boleh Mencegah Permintaan API Berlebihan Apabila Menggunakan Async/Await dalam JavaScript?

Susan Sarandon
Susan Sarandonasal
2024-12-15 12:34:11378semak imbas

How Can I Prevent Excessive API Requests When Using Async/Await in JavaScript?

Menggabungkan Fungsi Async, Tunggu dan setTimeout

Menggunakan ciri async JavaScript terkini, panduan ini menyediakan penyelesaian kepada isu prestasi biasa: menghantar permintaan yang berlebihan kepada Google API dalam jangka masa yang singkat. Matlamatnya adalah untuk memperkenalkan fungsi tidur untuk melambatkan permintaan dan meningkatkan prestasi skrip.

Kod Asal:

Kod awal ini menggunakan corak async/menunggu dengan cekap:

async function asyncGenerator() {
    while (goOn) {
        var fileList = await listFiles(nextPageToken);
        var parents = await requestParents(fileList);
    }
}

Masalah:

Kod melaksanakan gelung while terlalu pantas, mengakibatkan limpahan permintaan kepada API Google.

Percubaan Penyelesaian:

Untuk menangani perkara ini, fungsi tidur telah dicipta:

async function sleep(fn, par) {
    return await setTimeout(async function() {
        await fn(par);
    }, 3000, fn, par);
}

Walau bagaimanapun, fungsi ini gagal mengembalikan respons permintaan dengan betul.

Pelaksanaan Betul:

Isu dengan fungsi tidur terletak pada kekurangan janji yang dikembalikan oleh setTimeout. Untuk menyelesaikan masalah ini, versi yang dijanjikan boleh dibuat:

function timeout(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}
async function sleep(fn, ...args) {
    await timeout(3000);
    return fn(...args);
}

Gelung Dioptimumkan:

Untuk memperlahankan pelaksanaan gelung, fungsi tidur yang menjeda keseluruhan pengiraan tidak optimum. Pendekatan yang lebih baik ialah menggunakan konstruk Promise.all yang merangkumi fungsi tidur:

while (goOn) {
    var [parents] = await Promise.all([
        listFiles(nextPageToken).then(requestParents),
        timeout(5000)
    ]);
}

Pengubahsuaian ini memastikan pengiraan ibu bapa mengambil masa sekurang-kurangnya 5 saat, memperlahankan gelung secara berkesan dan mencegah API yang berlebihan permintaan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencegah Permintaan API Berlebihan Apabila Menggunakan Async/Await dalam JavaScript?. 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