Wie Sie mehrere Aktionen ausführen, ohne zu wissen, die man wird zuerst?

Wie ich warten Sie für beide ACTION_A und ACTION_B geschickt werden, ohne zu wissen, die man entsandt wurde, die erste?

Versuchte ich const result = yield take([ACTION_A, ACTION_B]) aber result ist nur der erste wird ausgelöst, Aktion, obwohl ich beide Aktionen.

Versuchte ich const {a, b} = yield race({a: yield take(ACTION_A), b: yield take(ACTION_B)}) aber wenn a definiert ist, b nicht.

Erinnere mich, ich kann das nicht einfach yield take(ACTION_A); yield take(ACTION_B) weil ich weiß nicht, was man zuerst kommt.

InformationsquelleAutor romseguy | 2017-05-12



One Reply
  1. 8

    Können Sie die all Helfer. all erzeugt einen Effekt, der die Beschreibung, die weist die middleware mehrere Effekte in parallelen und warten Sie, bis alle abgeschlossen sind.

    Könnte der code wie folgt Aussehen:

    function* mySaga() {
      const [actionA, actionB] = yield all([
        take(ACTION_A),
        take(ACTION_B),
      ])
    }
    

    Ich hoffe meine Antwort war hilfreich.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.