redux-saga/effects中的关键字:fork,call, put,takeEvery,takeLatest,all

1.fork

创建一个新的进程或者线程,并发发送请求。

function* user() {
    yield takeEvery('FETCH_REQUEST', fetch_user); // 监听 FETCH_REQUEST action
}

// 并发发送请求
function* fetch_user() {
    const [users, todos] = [
        yield fork(fetchResource, 'https://jsonplaceholder.typicode.com/users'),
        yield fork(fetchResource, 'https://jsonplaceholder.typicode.com/todos')
    ]
}

function* fetchResource(resource) {
    const data = yield call(axios.get, resource);
    // 获取 call 数据,触发成功后的 action
    yield put({ type: 'FETCH_SUCESS', uu: data });
}

2.call

发送 api 请求

3.put

发送对应的 dispatch,触发对应的 action

4.takeEvery

监听对应的 action;
每一次 dispatch 都会触发;例如:点击一个新增的按钮,2s 后触发新增动作,在2s内不断点击按钮,这时候,每一次点击,都是有效的。

5.takeLatest

监听对应的 action;
只会触发最后一次 dispatch;例如:点击一个新增的按钮,2s 后触发新增动作,在2s内不断点击按钮,这时候,只有最后一次点击是有效的。

6.all

跟 fork 一样,同时并发多个 action,没有顺序。

const rootUser = [
    user(),
    todo()
];

yield all([ // 同时并发多个
    ...rootUser, // 
    add()
]);

你可能感兴趣的:(redux-saga/effects中的关键字:fork,call, put,takeEvery,takeLatest,all)