در این مقاله، سه رویکرد برای پیاده سازی را پوشش خواهم داد کوتاه نظرسنجی HTTP، با استفاده از جاوا اسکریپت سمت سرویس گیرنده (TypeScript). نظرسنجی کوتاه شامل درخواست های مکرر و جداگانه برای بررسی وضعیت یک منبع است.
تصور کنید یک API با دو نقطه پایانی داریم: postTask
و getTask
. پس از ارسال یک کار (با استفاده از postTask
نقطه پایانی)، ما باید به طور مداوم در مورد نظرسنجی باشیم getTask
نقطه پایانی تا زمانی که وضعیت هر کدام را برگرداند انجام شد یا شکست خورد.
ما با کاوش در شروع خواهیم کرد زشت رویکرد
زشت
اولین چیزی که به ذهن می رسد یک بازگشتی است setTimeout
:
function handlePolling(
taskId: string,
done: (result: string) = void,
failed: (err: string) = void,
): void {
API.getTask(taskId).then(response = {
switch (response.status) {
case 'IN_PROGRESS':
setTimeout(() = handlePolling(taskId, done, failed), 1000);
break;
case 'DONE':
return done(response.result);
case 'FAILED':
return failed('polling failed');
default:
return failed(`unexpected status = ${response.status}`);
}
}).catch(err = {
failed(`getTask failed - ${err}`);
});
}
این روش کاملاً ساده است اما با چند نقص قابل توجه همراه است:
-
تماس های تلفنی:
done
&failed
.در حالی که این تا حد زیادی یک موضوع ترجیحی است، استفاده از تماس های برگشتی می تواند…