على سبيل المثال setInterval (function () {تنتج استدعاء (api ، بارام)} ، 1000)
كيف يمكنني استقصاء الواجهة ، إذا لم أستخدم العائد ، لا يمكنني تشغيل الولاية
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);
},
التعليق الأكثر فائدة