例如,当用户键入android
时。
客户端向服务器发送多个请求
即
a
an
and
,依此类推。
我只想将android
搜索请求记录在服务器中。
我该怎么办?
我正在考虑以下策略,但想知道是否有更好的策略。
log this search request
已经通过,则发送特殊的1 sec
如果要实现以上所述,那么如何使用redux-saga
来做到这一点?
答案 0 :(得分:2)
您需要在takeLatest
种效果中实现debounce。因此,如果您的组件调度了INPUT_CHANGED
动作,那么您的传奇故事将如下所示:
import { call, takeLatest, delay } from 'redux-saga/effects'
function* handleLog(action) {
// debounce by 1 sec
yield delay(1000);
if (action.payload.LOG_THIS_SEARCH_REQUEST) {
const apiResult = yield api.log(action.payload.value);
... // logic after api call is done
}
}
function* watchInput() {
// log latest input change
yield takeLatest('INPUT_CHANGED', handleLog);
}
因此,在提供的示例中,如果用户在1秒钟内触发了新的输入更改(即再添加一个字母),那么saga将仅处理最新的字母。