ant design + dva 中yield的使用疑问

1.dispatch发起action请求

dispatch({
  type: 'rule/fetch',
  payload: values,
});

2.找到对应的方法

*fetch({ payload }, { call, put }) {
      yield put({
        type: 'changeLoading',
        payload: true,
      });
      const response = yield call(queryRule, payload);
      yield put({
        type: 'save',
        payload: response,
      });
      yield put({
        type: 'changeLoading',
        payload: false,
      });
    },

疑惑上面的*fetch函数不是遇到yield就停止执行吗?那后面三个yield是什么时候触发的?

阅读 8.6k
3 个回答

理论上是这样的。

但其实 yield 也可以实现自动执行。

具体的可以看 co 的源代码,Async/Await 的基石之作。

https://github.com/tj/co

redux-saga帮你做了。
执行完第一个yield后,会自动执行第二个yield

另外呢,如果只有put呢,就不要写到effects中了,写到reducer就可以了

新手上路,请多包涵

这代码是什么意思

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进