Dva: هل استخدام غير متزامن / انتظار تنفيذ غير متزامن في التأثيرات لا يعمل؟ هل يجب علي استخدام * / العائد؟

تم إنشاؤها على ٩ أكتوبر ٢٠١٦  ·  11تعليقات  ·  مصدر: dvajs/dva

تأثيرات: {

/**
 * 数据查询
 * 
 * <strong i="6">@param</strong> {any} { payload }
 * <strong i="7">@param</strong> {any} { select, call, put }
 */
query: async function ({ payload }, { select, call, put }) {
  await put({ type: 'show_loading' });
  payload.page = payload.page || 1;
  payload.limit = payload.limit || 10;
  let data = await call(query, '/home/course', payload);
  if (data) {
    await put({
      type: 'query_success',
      payload: {
        list: data.data,
        total: data.count,
        current: data.currentPage,
      },
    });
  }
}

} ،

faq

التعليق الأكثر فائدة

sorrycc نظرًا لأنك ذكرت أيضًا السيناريوهات التي تحتاج إلى استخدام إلغاء هنا ، في الواقع ، يعد عدم التزامن / انتظار كافٍ في معظم الحالات. في الاستخدام الحالي ، استخدم المولد / العائد للاتصال غير المتزامن / الانتظار. هذا مؤلم للغاية. يمكن للمؤلف التفكير في دعم كلا الوضعين في نفس الوقت والسماح للمستخدمين بالاختيار بأنفسهم ، مثل إضافة عنصر تكوين واستدعاء الوضع غير المتزامن / انتظار بعد الافتتاح ، أو الحكم التكيفي.

ال 11 كومينتر

تأثيرات: {

/**
 * 数据查询
 * 
 * <strong i="6">@param</strong> {any} { payload }
 * <strong i="7">@param</strong> {any} { select, call, put }
 */
query: function* ({ payload }, { select, call, put }) {
  yield put({ type: 'show_loading' });
  payload.page = payload.page || 1;
  payload.limit = payload.limit || 10;
  let data = yield call(query, '/home/course', payload);
  if (data) {
    yield put({
      type: 'query_success',
      payload: {
        list: data.data,
        total: data.count,
        current: data.currentPage,
      },
    });
  }
}

} ،

نعم ، التأثير يدعم صياغة المولد فقط. async و await خارج التأثير ، ثم استخدام استدعاء العائد لضبط التأثير.

أفهم والحمد لله

معذرةً ، هل ستتاح الفرصة للتأثير لدعم عدم التزامن في المستقبل؟ تضمين التغريدة

لا يوجد مولد قابل للتحكم في Async ، مثل cancel ، ولهذا السبب تختار redux-saga استخدام المولد.

أوه

sorrycc كيف يمكنني إلغاء تأثير؟

miaojiuchen ما هو المشهد لماذا إلغاء التأثير؟

sorrycc لقد واجهت هذا السيناريو:

  • التأثير 1: الطلب ناجح ، يتم إرجاع رقم ، ويسمى التأثير 2 - تتم معالجة عداد الطرح
  • التأثير 2: بينما (صحيح) => تأخير ثم إرسال المخفض

هذا جيد في صفحة واحدة ، ولكن إذا قمت بزيارة صفحات أخرى ثم عدت إلى الصفحة السابقة ، فسيتم تكرار التأثير 2.
كيف يمكنني إلغاء التأثير ساري المفعول 1 ثم تشغيل التأثير 2؟
هل يجب علي استخدام توصيفات المسار الفرعية للاتصال بـCANCEL_EFFECTS؟

شكرا.

sorrycc نظرًا لأنك ذكرت أيضًا السيناريوهات التي تحتاج إلى استخدام إلغاء هنا ، في الواقع ، يعد عدم التزامن / انتظار كافٍ في معظم الحالات. في الاستخدام الحالي ، استخدم المولد / العائد للاتصال غير المتزامن / الانتظار. هذا مؤلم للغاية. يمكن للمؤلف التفكير في دعم كلا الوضعين في نفس الوقت والسماح للمستخدمين بالاختيار بأنفسهم ، مثل إضافة عنصر تكوين واستدعاء الوضع غير المتزامن / انتظار بعد الافتتاح ، أو الحكم التكيفي.

يمكنك تجربة redva ، يتم تمكين نفس إطار عمل

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات