Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Mengawal Kadar Permintaan API Dengan Berkesan Menggunakan Async/Await dan setTimeout?

Bagaimana untuk Mengawal Kadar Permintaan API Dengan Berkesan Menggunakan Async/Await dan setTimeout?

Susan Sarandon
Lepaskan: 2024-12-27 17:38:11
asal
606 orang telah melayarinya

How to Effectively Control the Rate of API Requests Using Async/Await and setTimeout?

Gabungan Fungsi Async Awaiit setTimeout

Dalam coretan kod ini, fungsi asyncGenerator cuba menggunakan ciri async-wait untuk memproses senarai fail daripada Google API. Walau bagaimanapun, gelung while dilaksanakan terlalu cepat, mengakibatkan permintaan API yang berlebihan sesaat. Untuk menangani perkara ini, pembangun cuba memperkenalkan fungsi tidur, listFiles, untuk melengahkan permintaan API.

Fungsi tidur direka bentuk untuk menangguhkan pelaksanaan fungsi listFiles sebanyak 3000 milisaat. Walau bagaimanapun, kod itu tidak berfungsi seperti yang dimaksudkan. Isunya terletak pada fungsi setTimeout, yang tidak secara asalnya mengembalikan janji yang boleh ditunggu.

Untuk menyelesaikan isu ini, anda perlu menjanjikan fungsi setTimeout melalui fungsi pembantu tamat masa:

function timeout(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}
Salin selepas log masuk

Selain itu, fungsi tidur boleh diubah suai untuk menggunakan pembantu tamat masa fungsi:

async function sleep(fn, ...args) {
    await timeout(3000);
    return fn(...args);
}
Salin selepas log masuk

Sebagai alternatif, untuk memperlahankan gelung while tanpa menggunakan fungsi tidur berasaskan panggil balik, pendekatan berikut boleh digunakan:

while (goOn) {
  // other code
  var [parents] = await Promise.all([
      listFiles(nextPageToken).then(requestParents),
      timeout(5000)
  ]);
  // other code
}
Salin selepas log masuk

Pendekatan ini memastikan pengiraan ibu bapa mengambil masa sekurang-kurangnya 5 saat, dengan berkesan memperlahankan gelung.

Atas ialah kandungan terperinci Bagaimana untuk Mengawal Kadar Permintaan API Dengan Berkesan Menggunakan Async/Await dan setTimeout?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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