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