ant design + dva 中yield的使用疑问

程序猿二十七
  • 153

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是什么时候触发的?

评论
阅读 4.9k
3 个回答
✓ 已被采纳

理论上是这样的。

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

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

https://github.com/tj/co

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

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

jsd_lxf
  • 1
新手上路,请多包涵

这代码是什么意思

宣传栏