1
我在redux-saga
中發現如何組織代碼時遇到困難。我有這個特殊的傳奇,使http請求(和許多其他工作)。其他人的傳奇sagas
我不希望它成爲一個必要的功能,但我也不想太困惑。
當時我已經創建了一個將通過這一行動來調用一個傳奇的時刻:
export const makeServerRequest = (options, success, error) => ({type: MAKE_REQUEST, options, success, error});
的傳奇是類似的東西:
function *makeRequestSaga(action) {
try {
// saga magic
yield put(action.success(response));
} catch (error) {
yield put(action.error(error));
}
}
function *serverSagasWatcher() {
yield takeEvery(MAKE_REQUEST, makeRequestSaga);
}
這種方法的問題,我覺得很難遵循邏輯,在我看來,回到回調時間。
yield put(makeServerRequest(options, loginSuccessful, loginError));
function *loginSuccessfulSaga(action) {
console.log('Success');
}
function *loginErrorSaga(action) {
console.log('Login error');
}
這樣我反正很多觀察家(每傳奇其中一個請求需要定義兩個動作,並運行兩個觀察家之一:
動作以這種方式被其他傳奇調用爲每個返回功能)。
這個用例的最佳實踐是什麼?
我也可以做real回調,但問題是生成器將保持活着,直到回調結束,所以如果回調中有一個無限循環,那麼生成器將永遠掛起。
如果我需要做強制要求,那麼redux-saga
優於redux-thunk
的優勢是什麼?
我的肯定,我失去了一些東西很容易瞭解這一點,但我沒有找到任何解決辦法...
謝謝,這確實是一個很好的方法 – rpadovani