javascript – 如何取消ComponentWillUnmount中的所有请求?

前端之家收集整理的这篇文章主要介绍了javascript – 如何取消ComponentWillUnmount中的所有请求?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

根据docs,ComponentWillUnmount能够取消请求.

我有一个页面,可以加载iframe的加载请求,以及其他页面请求.如果用户页面仍在处理请求时决定离开页面,那么如何取消这些请求以使其不影响用户此后访问的其他页面

我应该注意到我正在使用Redux和Redux-saga.

最佳答案
从技术上讲,您无法取消或中止承诺,因为Web浏览器不会公开任何方法.

如果用户导航到另一个页面,您可以做的只是忽略承诺.有两种方法可以做到这一点:

使用Redux,Thunk和promise中间件

您不应将应用程序状态存储在组件状态中.通过使用Redux,应用程序状态将在所有组件之间共享.然后将redux-promise-middlewareThunk中间件结合使用,以处理Redux中的异步操作.

简单地说,在您的行动中,您可以执行以下操作:

case 'LOAD_ORDERS_SUCCESS':
  if state.location != 'orders' { return }

  // store the data in the application state

使用RxJS和observables

Observables是Promises的另一种方式.

有一个名为redux-observable的库和一个来自Netflix的video,它解释了Observable如何完全用于这个原因.在他们的文档中查看此recipe

const fetchUserEpic = action$=>
  action$.ofType(FETCH_USER)
    .mergeMap(action =>
      ajax.getJSON(`/api/users/${action.payload}`)
        .map(fetchUserFulfilled)
        .takeUntil(action$.ofType(FETCH_USER_CANCELLED))
    );

猜你在找的JavaScript相关文章