鍍金池/ 問答/HTML/ dva.js的dispatch有回調(diào)嗎?

dva.js的dispatch有回調(diào)嗎?

handleRequestOptions = (options, cd) => {
    this.props.dispatch({
        type: this.page.model + '/enums',
        payload: {
            ClassName: options.payload,
            objectName: options.objectName,
        }
    }, cd())
}

this.handleRequestOptions(options, _ => {
    ...
})

好像沒作用???dva有這個(gè)設(shè)計(jì)嗎?

回答
編輯回答
過客

Dva@2dispatch添加了Promise.
如下:
(cd) => dispatch(...).then(() => cd());

2017年8月12日 00:29
編輯回答
乖乖噠

如果在dva@1中要實(shí)現(xiàn)回掉可以用Promise實(shí)現(xiàn):

new Promise((resolve) => {
    dispatch({
       type: 'model/fetch',
       payload: {
          resolve,
          id: userId,
       }
    })
}).then((res) => {
    console.log(res);
})

然后在model的effects中這樣寫:

...

*fetch({ payload }, { call }) {
  const { resolve } = payload;
  const { data } = yield call(services.fetch, payload);
  if (data.code === 0) {
    // 通過resolve返回?cái)?shù)據(jù),返回的數(shù)據(jù)將在Promise的then函數(shù)中獲取到
    !!resolve && resolve(data.data);
}
2017年12月18日 04:29