Dva: Kann setTimeout in Modelleffekten verwendet werden?

Erstellt am 2. Aug. 2017  ·  3Kommentare  ·  Quelle: dvajs/dva

Code zeigen wie unten

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

Nach dem Hinzufügen von setTimeout wird immer Uncaught SyntaxError: Unexpected Identifier gemeldet. Nach dem Entfernen ist es in Ordnung. Ich weiß nicht warum. Ist es nicht möglich, setTimeout hier zu verwenden?

question

Hilfreichster Kommentar

Versuchen:

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

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

Alle 3 Kommentare

Versuchen:

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

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

@sorrycc Ich habe festgestellt, dass die Verwendung von yeild put in setTimeout nicht funktioniert. Der nicht abgefangene SyntaxError: Unerwarteter Bezeichner, den ich zu melden begonnen habe, wird durch den Rückgabewert nach der Ausführung von yeild put verursacht. Wenn ich eine Aktion initiieren möchte, ändert diese Aktion zuerst den Zustand .Wert, was soll ich tun, wenn sich ein bestimmter Zustandswert nach einigen Sekunden ändert? Ich muss einen bestimmten Zustandswert ändern, um die Sichtbarkeit eines Elements zu steuern. Da es so viele Verwendungsmöglichkeiten gibt, muss ich alle Aktionen in einer Aktion schreiben. Mein eigenes Verständnis dieser Aktion muss in Effekte geschrieben werden, weil es hier ist. Nur call und put können innerhalb verwendet werden, und ich kann zwei Reduzierer einfügen und den Zustand zweimal ändern, aber die Verwendung von yeild scheint nicht von setTimeout gesteuert zu werden. Wie kann ich eine Aktion so einstellen, dass sie zu einem bestimmten Zeitpunkt ausgelöst wird? time (ursprünglich kann setTimeout außerhalb von Dispatch geschrieben werden Um dies zu erreichen, aber wenn das Projekt auf diese Weise geändert werden soll, müssen möglicherweise Hunderte von Stellen geändert werden, die nicht geändert werden können)

Sie können sich die Zeit nehmen, den Unterschied zwischen Generator und gewöhnlicher Funktion zu verstehen.Generische Funktionen können nicht im Generator eingestellt werden.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen