Dva: @ 云 谦 كيفية الاستقصاء عن استدعاء العائد (api ، param) ، سيؤدي استخدام setInterval إلى ظهور خطأ في بناء الجملة

تم إنشاؤها على ٨ نوفمبر ٢٠١٦  ·  10تعليقات  ·  مصدر: dvajs/dva

على سبيل المثال setInterval (function () {تنتج استدعاء (api ، بارام)} ، 1000)

question

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

const delay = timeout => {
  return new Promise(resolve => {
    setTimeout(resolve, timeout);
  });
};

ال 10 كومينتر

كيف يمكنني استقصاء الواجهة ، إذا لم أستخدم العائد ، لا يمكنني تشغيل الولاية

while (true) {
  yield call(delay, 1000);
  yield call(api, params);
}

سيؤدي تأخير الكتابة مثل هذا إلى الإبلاغ عن أن undefind موجود في أدوات redux-saga ، فكيف يجب أن تقدم dva التأخير؟

const delay = timeout => {
  return new Promise(resolve => {
    setTimeout(resolve, timeout);
  });
};

تمت إعادة هيكلة مشروعنا حاليًا باستخدام dva ، والآن نواجه هذه المشكلة ، أخي ، شكرًا لك أخي Qian

لقد جربته للتو ، إنه يعمل ، شكرًا لك sorrycc ! ! !

هناك عملية على صفحة sorrycc تريد إنهاء هذا الاستطلاع. ماذا أفعل؟

أهلا،
هل هناك أي دروس تفصيلية حول معالجة تأثير الملحمة؟ لقد واجهت نفس المشكلة ، مثل إنهاء الاقتراع ، وإعادة التشغيل ، وما إلى ذلك. الطريقة البسيطة يمكن اكتشافها باستخدام العلم ، وهناك أيضًا إلغاء ، تفرع ، takeLatest. أتساءل عما إذا كان يمكنك إعطاء بعض الأمثلة للتعلم؟
شكرا لك.

sorrycc أود أن أسأل مرة أخرى ، إذا كان هذا هو الحال ، فماذا لو تم إيقاف الحلقة عند تشغيل أحداث معينة؟

تحتاج إلى استخدام fork of redux-saga لإنشاء مهمة ، وإلغاء المهمة عند الحاجة.

    * forkInterval(actions, { fork, cancelled, put }) {
      globalInterval = yield fork(function* () {
        try {
          while (true) {
            yield delay(3000);
            yield put({ type: 'youraction'  });
          }
        } finally {
          if (yield cancelled()) {
            // 取消之后的操作,这里什么都不做
          }
        }
      });
    },

    * clearInterval(actions, { cancel }) {
      yield cancel(globalInterval);
    },
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات