* foo_effect({ payload }, { put }) {
let interval = setInterval(() => {
co(function* () {
console.log('baz')
yield put({ type: 'foo_reducer' })
})
}, 1000)
}
baz能被打印出来,但是foo_reducer没有被执行,求助
不能用 setInterval(() => {})
应该把setInterval(() => {})封装成一个异步函数然后yield吧
大佬能帮忙详细说说吗?
setInterval是可以执行的,是不是yield reducer有啥限制?
@sorrycc
const delay = ms => new Promise(resolve => setTimeout(resolve, ms))
// or import { delay } from 'redux-saga'
* foo_effect({ payload }, { put }) {
while (true) {
console.log('baz')
yield put({ type: 'foo_reducer' })
yield delay(1000)
}
}
这应该能实现你想要的结果,请多查看redux-saga的文档
@objectisundefined 有另外的代码会取消的,在这里没写出来 - -
@objectisundefined while(true) 路子有点野 - -,这样后续还想执行别的代码就不行了
@miaojiuchen
while(true) 还好吧,还有大神用 switch(true) 呢
https://github.com/jnotnull/dva-generator/issues/2#6 effects中在回调中执行其他effects
我往foo_effect的payload中传入参数,根据参数判断是否继续定时请求,这种做法不行,该怎么改?@objectisundefined