다음 코드가 작동합니다. 그것은 아약스 요청을 수행하고 다음 번에이 작업을 호출TypeError : 스트림이 예상되는 곳에 잘못된 개체를 입력했습니다.
export const loadThingsEpic = action$ => {
return action$.ofType(LOAD_THINGS)
.mergeMap(({things}) => {
const requestURL = `${AppConfig.serverUrl()}/data/things`;
return ajax.getJSON(requestURL)).map(response => {
return finishLoadingThings(response);
}).map(() => {
return sendNotification('success');
});
})
.catch(e => {
return concat(of(finishLoadingThings({ things: {} })),
of(sendNotification('error')));
});
}}
하지만이 코드는하지 않습니다
export const loadThingsEpic = action$ => {
return action$.ofType(LOAD_THINGS)
.mergeMap(({things}) => {
const requestURL = `${AppConfig.serverUrl()}/data/things`;
return ajax.getJSON(requestURL).switchMap(response => {
return concat(of(finishLoadingThings(response)),
of(sendNotification('success')));
});
})
.catch(e => {
return concat(of(finishLoadingThings({ things: {} })),
of(sendNotification('error')));
});
}
내가 함께이 작업을 병합하는 switchMap에 의해지도를 교체했습니다 (다른 많은 게시물에서 볼 수 있듯이). 예외가 발생하면 catch에서 작동합니다. 코드에 무슨 문제가 있는지 궁금합니다. Map, swicthMap 및 mergeMap과 같은 사용시기를 실제로 파악할 수 없기 때문에 추측하고 있습니다.
sendNotification에와 finishLoadingthings 반환 조치 개체 :
export function finishLoadingThings(data: any) {
return {
type: FINISH_LOADING_THINGS,
data,
};
}
감사합니다!
그냥 첫 번째 코드가 작동하는 것처럼 보였지만 첫 번째 작업은 감속기에 의해 수신되지 않습니다 ... 저는 매우 혼란 스럽습니다 ... – ThePainnn
제가 도울 수 있다고 생각합니다. 예제를 간소화하거나 사용되는 다양한 함수의 정의를 제공 할 수 있습니까? 그들 모두가 무엇을하고 돌아 왔는지 분명히하고 싶습니다. – jayphelps
예제를 단순화했습니다. 감사! – ThePainnn