Dva: هل يمكن استخدام setTimeout في تأثيرات النموذج؟

تم إنشاؤها على ٢ أغسطس ٢٠١٧  ·  3تعليقات  ·  مصدر: dvajs/dva

تظهر رمز على النحو التالي

*aaa({
          payload
      },{call,put}){
        yield put({
            type: 'xxx',
            payload: {...payload}
        });
        setTimeout(
            yield put({
                type: 'xxxx',
            })
        ,1000)
      },

بعد إضافة setTimeout ، فإنه يُبلغ دائمًا عن Uncaught SyntaxError: Uncaught SyntaxError: Uncaught SyntaxError: Uncaught SyntaxError: Uncaught SyntaxError:

question

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

محاولة:

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

*aaa() {
  yield call(delay, 1000);
  yield put...
}

ال 3 كومينتر

محاولة:

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

*aaa() {
  yield call(delay, 1000);
  yield put...
}

sorrycc لقد اكتشفت أن استخدام yeild put في setTimeout لن يعمل. خطأ SyntaxEnaught: المعرف غير المتوقع الذي بدأت في الإبلاغ عنه ناتج عن قيمة الإرجاع بعد تنفيذ yeild put. إذا كنت أرغب في بدء إجراء ، فإن هذا الإجراء يغير الحالة أولاً القيمة ، ماذا أفعل إذا تغيرت قيمة معينة للحالة بعد بضع ثوان؟ أحتاج إلى تغيير قيمة معينة للحالة للتحكم في رؤية عنصر ما. نظرًا لوجود العديد من الأماكن التي يجب استخدامها ، أحتاج إلى كتابة جميع الإجراءات في إجراء ما. يجب كتابة فهمي لهذا الإجراء في التأثيرات ، لأنه هنا. لا يمكن استخدام سوى call and put في الداخل ، ويمكنني وضع اثنين من المخفضات وتغيير الحالة مرتين ، ولكن لا يبدو أن استخدام yeild يتحكم فيه setTimeout. كيف يمكنني توقيت إجراء ليتم تشغيله في وقت محدد الوقت (في الأصل ، يمكن كتابة setTimeout خارج الإرسال لتحقيق ذلك ، ولكن إذا تم تغيير المشروع بهذه الطريقة ، فقد يتعين تغيير مئات الأماكن ، ولن يكون من الممكن تغييرها)

يمكنك أن تأخذ الوقت الكافي لفهم الفرق بين المولد والوظيفة العادية. لا يمكن تعيين الوظيفة العامة في المولد.

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