نمایش تدریجی پاسخ حس انتظار را کم میکند، اما متن در حال رسیدن هنوز پاسخ کامل نیست. قطع شبکه، خطای سرور و پایان طبیعی باید وضعیتهای متفاوت داشته باشند. کاربر نباید جمله نیمهکاره را خروجی نهایی بداند یا با بازشدن دوباره اتصال، متن تکراری در صفحه ببیند.
روش اجرا و تصمیمگیری
برای هر جریان، شناسه کار، شماره قطعه و رویداد پایان تعریف کنید. مرورگر قطعهها را به ترتیب نمایش دهد و قطعه تکراری را دوباره اضافه نکند. ساختار جریان هر سرویس را از مستندات همان API بخوانید؛ رویدادهای SSE یا SDKهای مختلف را یکسان فرض نکنید.
وضعیت رابط را به آماده، در حال دریافت، کامل، ناقص و لغوشده تقسیم کنید. دکمه کپی یا استفاده از نتیجه باید معلوم کند متن کامل است یا نه. اگر پاسخ ساختاریافته برای انجام عملیات لازم است، تا دریافت کامل و اعتبارسنجی، آن را اجرا نکنید.
در قطع ارتباط، متن دریافتشده را با برچسب ناقص نگه دارید و گزینه ادامه مجاز یا شروع دوباره ارائه کنید. اتصال مجدد خودکار همیشه به معنی ادامه همان تولید نیست. سرور باید روشن کند از کدام قطعه میتوان ادامه داد یا لازم است کار تازهای ساخته شود.
نمونهٔ ساختگی و قابل تکرار
در نمونه ساختگی، پاسخ در سه قطعه میرسد و پس از قطعه دوم شبکه قطع میشود. رابط دو قطعه را نگه میدارد اما نشان «پاسخ کامل نشده» دارد. سرور فقط اگر ادامه از شماره بعدی را پشتیبانی کند، قطعه سوم را میفرستد. در غیر این صورت، کاربر اجرای تازه را انتخاب میکند و متن قبلی جدا باقی میماند. چسباندن خروجی اجرای تازه به اجرای قبلی میتواند دو پاسخ ناسازگار بسازد؛ حتی اگر ظاهر صفحه روان باشد.
محدودیتها و خطاهای رایج
جریان سریعتر، کیفیت پاسخ یا سرعت کل کار را ثابت نمیکند. همچنین AbortController در مرورگر به تنهایی تضمین توقف پردازش سرور نیست. متن خصوصی را برای بازسازی جریان بیدلیل در ذخیرهسازی عمومی مرورگر نگه ندارید و سیاست پاککردن را تعریف کنید.
کنترل پیش از استفاده
| کنترل | معیار پذیرش |
|---|---|
| پایان | رویداد پایان معتبر از قطع اتصال قابل تشخیص باشد. |
| ترتیب | قطعه تکراری یا خارج از ترتیب، متن را خراب نکند. |
| استفاده | خروجی ناقص بدون هشدار وارد تصمیم یا ابزار نشود. |
کاربرگ همراه
کاربرگ برای آزمایش قطع جریان در نقطههای مختلف است. متن نمونه کوتاه و غیرخصوصی انتخاب کنید. نتیجه را هم از نظر رخدادهای شبکه و هم آنچه کاربر روی صفحه میبیند ثبت کنید؛ موفقیت یکی جای دیگری نیست.
دریافت کاربرگ CSV این راهنما — دادههای داخل فایل نمونهٔ ساختگیاند. نسخهٔ اصلی را نگه دارید و برای آزمون خودتان یک کپی بسازید.
منبع و ادامهٔ کار
MDN: رویداد ارسالی سرور؛ MDN: AbortController. تاریخ بررسی منابع: ۱ نوامبر ۲۰۲۶.
اگر کاربرد شما پاسخگویی به مشتری است، مسیر مرتبط اپرا را ببینید و مسئله و محدودیتهای همین کاربرگ را برای بررسی در دمو همراه داشته باشید.