راکت
حل شده

تداخل ریکوئست ها و ادغام خروجی

4 پاسخ

سلام
برنامه ام با ویو جی اس هستش
در صفحه اول برندها هستش وقتی روش کلیک میکنی میره محصولات اون برند رو نشون میده درحالی در ریسپانس تایم اون هم زیاده مشکل اینجاست زمانی که روی برندشماره یک کلیک میکنی میره صفحه محصولات ریسپانس تایم مثلا 10 ثانیه هستش حالا همیطور که در حال لود شدن هستش میرم صفحه اول یه برند دیگه رو لود میکنیم و این ریسپانس تایم مثلا 5 ثانیه هستش و ریکوئست اول هم هنوز پاسخش نیومده . بعد ریسپانس اول میاد و ر بعد ریسپانس دوم میاد چیزی که مشاهده میکنم اینه که محصولات برند اول رو نشون میده و محصولات برنده دوم هم نشون میده یعنی ترکیب میکنه . نحوه ذخیره اطلاعات هم با vuex هستش و دیتا رو هر با که درخواست ارسا ل میشه هم خالی میکنم .
برای حل این مشکل چی کار باید کرد؟
آیا مشکل از ریسپانس تایم هستش ؟

ثبت پرسش جدید

پاسخ‌ها

4
akam-nejati
akam-nejati
@mr.akam.320
بهترین پاسخ

mostafa.8722@
میتونید این مقاله رو بخونید در همین زمینه . ولی چند جا رو چک کنید . مثلا ایا شرط اجرا میشه یا نه . کنسل کردن درخواست رو خارج از شرط بنویسید ببینید چه جوریه

اینم لینک مقاله : https://coderethinked.com/how-to-cancel-a-request-using-axios-in-vue-js/amp/

akam-nejati
akam-nejati
@mr.akam.320

سلام . میتونید با استفاده از هوک های vue js چک کنید که وقتی کامپوننتتون از بین رفت یا به اصطلاح صفحه یه برندتون بسته شد . درخواست همون جا کنسل بشه و نتیجه اون درخواست برنگرده . که اگه از fetch استفاده می کنید میتونید با کمک abort این کار رو انجام بدید . اینجوری دیگه درخواستی برگشت داده نمیشه

امیرمهدی رحیمی
امیرمهدی رحیمی
@AmirMahdiAmirMahdi

تخصص: front-end

سلام
احتمالا چون از vuex استفاده کردین و اون هم یک استور گلوبال هستش اینطوری میکنه
1__میتونید این کارو بکنید که دکمه برند مورد نظر یک router-link باشه و وقتی صفحه مورد نظر لود شد با کمک هوک ها به سرور ریکویست بزنید
و در همون صفحه ذخیرش کنید تا اینطوری توی صفحه های دیگه دخالت نداشته باشه

2__ولی اگه میخواید توی یه متغیر توی vuex باشه میتونید قبل از باز شدن صفحه کامل متغیر رو به null تغییر بدین و بعد دوباره پرش کنید

3__اگه این امکان وجود نداره میتونید با کمک هوک ها قبل از کامل بسته شدن صفحه ریکوست رو کنسل کنید که با abort قابل انجامه ;)

شاید پاسخ شما همین‌جا باشد

Mostafa Nazar
Mostafa Nazar
@mostafa.8722

تخصص: برنامه نویس وب و موبایل

ممنون
@mr.akam.320
@AmirMahdiAmirMahdi
من از کد زیر برای کنسل کردن استفاده کردم برای axios ولی جواب نداد

   let  source = axios.CancelToken.source();
      if (source) {
      source.cancel("Todos Component got unmounted");

نحوه ی استفاده از abort چطوریه؟

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام