我正在使用 Apollo-Client 对我的 GraphQL 服务器进行查询和突变。由于 Apollo 有自己的错误处理,因此实现 takeUntil 函数来取消我的查询调用和我的突变要困难得多。
使用 Apollo,我的突变如下所示:
export const languageTimeZoneEpic = (action$) => {
return action$.ofType(CHANGE_LANGUAGE)
.mergeMap(action => client.mutate({
mutation: languageMutation,
variables: { id: action.id, language: action.selected_language }
}).then(result => changeLanguageFulfilled(result))
.catch(error => changeLanguageError(error))
);
};
我的突变没有问题,如果有错误,它会捕获它。这里的问题是,如果我takeUntil()
像下面的示例一样添加函数,我的函数就不再起作用了。
export const languageTimeZoneEpic = (action$) => {
return action$.ofType(CHANGE_LANGUAGE)
.mergeMap(action => client.mutate({
mutation: languageMutation,
variables: { id: action.id, language: action.selected_language }
}).then(result => changeLanguageFulfilled(result))
.catch(error => changeLanguageError(error))
).takeUntil("END_LANGUAGE");
};
我想知道是否有一种方法可以使用该takeUntil()
功能,即使我使用具有自己的错误处理的客户端。
*如果我在突变完成之前调度另一个动作,这里的 takeUntil() 将被调用。
谢谢