Javascript 使用TakeTill在Redux中取消异步请求的预期行为是什么
我是RXJS新手,我发现使用TakeTill取消异步请求非常有用。但是当我测试它的时候,我发现即使我们取消了请求,实际的请求仍然在进行 我有这个JSbin代码段要测试 在这里,即使您通过单击“取消”(多次)按钮取消请求,实际请求也不会取消 我不确定应该是这样的。。如果是,那么取消异步请求意味着什么呢。我有点困惑。。请分享一些想法Javascript 使用TakeTill在Redux中取消异步请求的预期行为是什么,javascript,asynchronous,redux,rxjs,redux-observable,Javascript,Asynchronous,Redux,Rxjs,Redux Observable,我是RXJS新手,我发现使用TakeTill取消异步请求非常有用。但是当我测试它的时候,我发现即使我们取消了请求,实际的请求仍然在进行 我有这个JSbin代码段要测试 在这里,即使您通过单击“取消”(多次)按钮取消请求,实际请求也不会取消 我不确定应该是这样的。。如果是,那么取消异步请求意味着什么呢。我有点困惑。。请分享一些想法 对此的任何回复都将不胜感激。。谢谢这个问题很微妙,但显然很重要。根据您的代码: const fetchUserEpic=action$=> 类型的操作$(获取用户)
对此的任何回复都将不胜感激。。谢谢这个问题很微妙,但显然很重要。根据您的代码:
const fetchUserEpic=action$=>
类型的操作$(获取用户)
delay(2000)/这个问题非常微妙,但显然很重要。根据您的代码:
const fetchUserEpic=action$=>
类型的操作$(获取用户)
.delay(2000)/这可能对将来的人有所帮助
像上面提到的JayHelps一样,更好的解决方案是使用RXjs AjaxObservable,因为它取消了实际的XMLHttpRequest,而不是忽略响应
但目前RxJS v5“RxJS Observable.ajax跨域问题”中存在一些问题
我找到的好解决方案是“允许绕过默认配置”
如下图所示:
const fetchUserEpic = action$ =>
action$.ofType(FETCH_USER)
.mergeMap(action =>
Observable.timer(2000)
.mergeMap(() =>
Observable.ajax({
url:`//api.github.com/users/redux-observable`,
crossDomain: true
})
.do(data => alert(JSON.stringify(data)))
.map(fetchUserFulfilled)
)
.takeUntil(action$.ofType(FETCH_USER_CANCELLED))
);
这可能对将来的人有所帮助
像上面提到的JayHelps一样,更好的解决方案是使用RXjs AjaxObservable,因为它取消了实际的XMLHttpRequest,而不是忽略响应
但目前RxJS v5“RxJS Observable.ajax跨域问题”中存在一些问题
我找到的好解决方案是“允许绕过默认配置”
如下图所示:
const fetchUserEpic = action$ =>
action$.ofType(FETCH_USER)
.mergeMap(action =>
Observable.timer(2000)
.mergeMap(() =>
Observable.ajax({
url:`//api.github.com/users/redux-observable`,
crossDomain: true
})
.do(data => alert(JSON.stringify(data)))
.map(fetchUserFulfilled)
)
.takeUntil(action$.ofType(FETCH_USER_CANCELLED))
);
哇,太棒了,这已经解释得很清楚了,我所有的疑问现在都被澄清了。。非常感谢你的努力。。我已经测试过了,效果非常好。。再一次,使用AjaxObservable的想法是非常令人惊讶的,我测试过它也会导致一些控制台错误,但肯定会继续下去……我注意到了另一件好事。。取消选项将终止所有(相关)请求,如果用户(意外)多次请求同一呼叫,这将非常有用。。regardsWow,太棒了,这是非常好的解释,我所有的疑问现在都被澄清了。。非常感谢你的努力。。我已经测试过了,效果非常好。。再一次,使用AjaxObservable的想法是非常令人惊讶的,我测试过它也会导致一些控制台错误,但肯定会继续下去……我注意到了另一件好事。。取消选项将终止所有(相关)请求,如果用户(意外)多次请求同一呼叫,这将非常有用。。Regards自5.0.0-beta.10版以来,您链接到的问题已修复并包含在我们的版本中。如果您仍然认为存在bug,您是否可以创建一个新的记录单,并提供一种复制方法?您链接到的问题已修复,并且自5.0.0-beta.10版以来已包含在我们的版本中。如果你仍然相信有一个bug,你能用一种复制的方法创建一个新的票证吗?