2016-09-20 40 views
2

工作,我有一個終極版,傳奇如下:終極版,傳奇不會在第一時間

export function* loadApplianceSaga() { 
    try { 
    let {request, success, error} = yield take(ActionTypes.APPLIANCE.LOAD); 
    request.url = yield select(getResourceLink, request.resource); 
    const response = yield call(makeRequest, request); 
    if (!response.error) { 
     yield put({type: success, payload: response.body}); 
    } else { 
     yield put({type: error, payload: response}); 
    } 
    } catch (e) { 
    yield put({type: ActionTypes.REQUEST.CALL_ERROR, error: e}); 
    } 
} 

export function* watchLoadAppliance() { 
    while (true) { 
    yield* takeEvery(ActionTypes.APPLIANCE.LOAD, loadApplianceSaga); 
    } 
} 

和根的傳奇:

export default function* rootSaga() { 
    yield [ 
    fork(watchLoadAppliance) 
    ] 
} 

我現在面臨一個問題,即沒有按loadApplianceSaga第一次工作。我登錄並看到第一次只發送了ActionTypes.APPLIANCE.LOAD操作,然後沒有任何操作被調度。但在第二次,我可以看到成功或失敗的行動。

誰能告訴我什麼是錯的?提前致謝!

更新動作

export const loadAppliances =() => { 
    return { 
    type: ActionTypes.APPLIANCE.LOAD, 
    request: { 
     resource: Resources.Appliances, 
     param: { 
     page: 0, 
     size: 5, 
     sort: 'name,desc' 
     }, 
     header: { 
     Accept: 'application/json' 
     } 
    }, 
    success: ActionTypes.APPLIANCE.LOAD_SUCCESS, 
    error: ActionTypes.APPLIANCE.LOAD_ERROR 
    } 
}; 
+0

該操作是否包含{request,success,error}? –

+0

是的,行動包括所有這些。 –

+0

我已添加操作。 @Utro –

回答

2

你已經使用take兩次。 嘗試

export function* loadApplianceSaga(action) { 
    try { 
    let {request, success, error} = action; 
    request.url = yield select(getResourceLink, request.resource); 
    const response = yield call(makeRequest, request); 
    if (!response.error) { 
     yield put({type: success, payload: response.body}); 
    } else { 
     yield put({type: error, payload: response}); 
    } 
    } catch (e) { 
    yield put({type: ActionTypes.REQUEST.CALL_ERROR, error: e}); 
    } 
} 

export function* watchLoadAppliance() { 
    while (true) { 
    yield* takeEvery(ActionTypes.APPLIANCE.LOAD, loadApplianceSaga); 
    } 
} 
+0

非常感謝你!這樣可行。你能解釋一下我爲什麼遇到這個問題嗎?我是新來的稀有事件。 –

+0

也我想,你不應該改變行動@AnNguyen –

+0

哦,我會考慮它。謝謝! –