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()
]);
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。