SPA中的路由更改时,http请求会如何处理

时间:2018-12-08 08:22:01

标签: php node.js angular reactjs single-page-application

让我们想象一个请求正在加载,并且页面(组件)改变了正在加载的请求的状态?

请考虑使用前端SPA (单页应用程序),例如具有 angular.js,angular,react 等项目的项目。 &&

以及后端会发生什么?

2 个答案:

答案 0 :(得分:1)

一旦从SPA触发了请求,它将一直保持打开状态,直到获得后端的响应或连接终止为止。终止可以通过多种方式发生,例如:

  • 页面重新加载。
  • 使用clientreq对象手动终止。

答案 1 :(得分:1)

根据您所使用的请求库,有一些选项。但是正如您所说,它是一个单页面应用程序,您可以卸载该页面或组件。

示例:

使用react,生命周期方法之一是ComponentWillUnmount,假设您在ComponentDidMount中并且在请求完成之前用户离开页面发送了一个请求。您可以在 ComponentWillUnmount 中取消请求。

您几乎可以使用所有http库取消请求,特别是使用rxjs进行redux-obseravble是一个很好的选择。

import { ajax } from 'rxjs/ajax';

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

当用户按下按钮或加载页面时,您可以启动操作以获取用户数据,直到操作完成或启动fetch_user_cancelled操作为止,例如,在componentWillUnmount中。

希望对您有所帮助:)