আমি নতুন অ্যাসিঙ্ক বৈশিষ্ট্যগুলি ব্যবহার করার চেষ্টা করছি এবং আমি আশা করি আমার সমস্যা সমাধান করা ভবিষ্যতে অন্যদের সহায়তা করবে। এটি আমার কোড যা কাজ করছে:
async function asyncGenerator() {
// other code
while (goOn) {
// other code
var fileList = await listFiles(nextPageToken);
var parents = await requestParents(fileList);
// other code
}
// other code
}
function listFiles(token) {
return gapi.client.drive.files.list({
'maxResults': sizeResults,
'pageToken': token,
'q': query
});
}
সমস্যাটি হ'ল আমার লুপটি খুব দ্রুত চলে এবং স্ক্রিপ্টটি প্রতি সেকেন্ডে গুগল এপিআইতে অনেকগুলি অনুরোধ প্রেরণ করে। অতএব আমি অনুরোধে বিলম্ব করে এমন একটি ঘুমের ক্রিয়াকলাপ তৈরি করতে চাই। এইভাবে আমি অন্যান্য অনুরোধগুলি বিলম্ব করতে এই ফাংশনটি ব্যবহার করতে পারি। অনুরোধটি বিলম্ব করার অন্য কোনও উপায় থাকলে, দয়া করে আমাকে জানান।
যাইহোক, এটি আমার নতুন কোড যা কাজ করে না। অনুরোধের প্রতিক্রিয়া সেটটাইমআউটের মধ্যে বেনামে অ্যাসিঙ্ক ফাংশনে ফিরিয়ে দেওয়া হয়েছে, তবে আমি কীভাবে স্লিপ ফাংশন রেসপন্সের প্রতিক্রিয়া ফিরিয়ে দিতে পারি তা আমি জানি না। প্রাথমিক asyncGenerator ফাংশন।
async function asyncGenerator() {
// other code
while (goOn) {
// other code
var fileList = await sleep(listFiles, nextPageToken);
var parents = await requestParents(fileList);
// other code
}
// other code
}
function listFiles(token) {
return gapi.client.drive.files.list({
'maxResults': sizeResults,
'pageToken': token,
'q': query
});
}
async function sleep(fn, par) {
return await setTimeout(async function() {
await fn(par);
}, 3000, fn, par);
}
আমি ইতিমধ্যে কিছু বিকল্প ব্যবহার করে দেখেছি: গ্লোবাল ভেরিয়েবলে প্রতিক্রিয়া সঞ্চয় করে ঘুমের ফাংশন থেকে এটি ফিরিয়ে আনা, বেনামে ফাংশনটির মধ্যে কলব্যাক ইত্যাদি
Promise.all
পদ্ধতির। এত সহজ এবং মার্জিত!