import test from './request/test';
// 定义一个model
export default {
namespace: 'test',
effects: {
* request({ value }, { put, call }) {
const result = yield call(test, value);
return result;
},
},
};
// 在view 调用
import React from 'react';
import { connect } from 'dva';
function Test(props) {
const { dispatch } = props;
function test(value) {
dispatch({ type: 'test/request', value }).then(() => {
console.log(value);
})
}
return (
<div>
<button onClick={() => test('a')}>a</button>
<button onClick={() => test('b')}>b</button>
</div>
);
}
export default connect()(Test);
a和b依次点击,请求成功后分别打印出a,b
在a请求没成功返回前点击b,那么a的then方法会失效,也就是不执行。
dva: 2.0.3
@jinyang1994 该问题存在,关联 #1368 ,有两个提交 PR #1367 ,我自己提交的 PR #1493 中的一次提交也是修复这个问题。
谢谢,现在是使用callback的方式暂时解决了问题,但是风格跟规范有点不符。希望作者可以快点merge
我也遇到这个问题了,看来不只我一个人
@jinyang1994 不是,作者最近忙着开发 umi ,工作负担比较重,开源不易。
同问,大家有什么好的方式处理吗?我现在只能写多个名字不一样的 effect 来处理,希望作者能早点解决 @sorrycc
@appLhui 你可以传递callback暂时解决一下。
It's fixed in the master branch, will be released in the next version.
Most helpful comment
我也遇到这个问题了,看来不只我一个人