在rxjs中取消对新emmision的Ajax请求

时间:2017-11-09 14:33:32

标签: rxjs reactive-programming

我是反应式编程的新手,在创建AJAX导航侧导航时遇到了问题。

String myData = request.getParameter("tableData");

当我点击change_password或update_profile时,会发出一个ajax请求但是change_password的请求被延迟,因此当单击它并单击update_profile时,会显示update_profile表单,但在完成后会被change_password表单替换。

如果点击另一个列表项,我将如何取消第一个AJAX请求?

1 个答案:

答案 0 :(得分:6)

当生成新的发射时,您可以使用switchMap取消订阅上一个流(您的Ajax调用)。

有人说;因为您使用promise Ajax版本无法取消该请求。因此,即使switchMap提供取消挂钩(unsubscribe),承诺也不会对此采取行动。

您可以将Rx.Observable.ajax用于Observable版本。在您完成之前取消订阅时,可以中止此调用。 AFAIK它依赖于DOM,因此在nodejs环境中,您可以使用universal Ajax npm package在非DOM环境中运行时从npm替换内部xhrxhr2