[英]Waiting in a redux-saga
我想在传奇中引入延迟(使用 redux-saga)。
我怎样才能做到这一点?
如果redux-saga提供了一个API,我也想知道如何手动实现。
function* save({ payload }) {
yield put(pending());
// I want to simply wait (non-blocking) here for say 2 seconds
yield put(complete());
}
Redux-saga 对此有特殊效果:
延迟(毫秒,[val])
返回将在 ms 毫秒后使用 val 解析的 Promise。
例子:
import { delay, call } from 'redux-saga/effects'
function* someSaga(input) {
yield put(someAction())
yield delay(500)
yield put(anotherAction())
}
你可以通过一个 promise 和一个生成器函数来实现:
function sleep(sec) {
return new Promise(resolve => setTimeout(resolve, sec*1000));
}
function* save({ payload }) {
yield put(pending());
yield sleep(2); //wait 2 seconds
yield put(complete());
}
来源。
export function delay(ms, val = true) {
let timeoutId
const promise = new Promise(resolve => {
timeoutId = setTimeout(() => resolve(val), ms)
})
promise[CANCEL] = () => clearTimeout(timeoutId)
return promise
}
使用从 redux-saga/effects 导入的延迟可以一次性解决您的问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.