Dva: setTimeoutをモデル効果で使用できますか?

作成日 2017年08月02日  ·  3コメント  ·  ソース: dvajs/dva

コードは以下のように表示されます

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

setTimeoutを追加すると、常にUncaught SyntaxError:Unexpectedidentifierが報告されます。削除しても問題ありません。理由はわかりません。ここでsetTimeoutを使用することはできませんか。

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 setTimeoutにyeildputを使用しても機能しないことがわかりました。UncaughtSyntaxError:報告を開始した予期しない識別子は、yeild putを実行した後の戻り値が原因です。アクションを開始する場合、このアクションは最初に状態を変更します。 。値、状態の特定の値が数秒後に変更された場合はどうすればよいですか?要素の可視性を制御するには、状態の特定の値を変更する必要があります。使用する場所が非常に多いため、アクション内のすべてのアクションを記述する必要があります。このアクションについての私自身の理解は、エフェクト内に記述する必要があります。内部で使用できるのはcallとputのみで、2つのレデューサーを配置して状態を2回変更できますが、yeildの使用はsetTimeoutによって制御されていないようです。指定されたタイミングでアクションがトリガーされるようにするにはどうすればよいですか。時間(元々、setTimeoutはディスパッチの外部で書き込むことができます。これを実現するには、プロジェクトをこのように変更する場合、何百もの場所を変更する必要があり、変更することはできません)

ジェネレーターと通常の機能の違いを時間をかけて理解することができます。ジェネレーターにジェネリック関数を設定することはできません。

このページは役に立ちましたか?
0 / 5 - 0 評価