当SPA中的路由发生更改时,http请求会发生什么



让我们假设一个请求正在加载,并且页面(组件(更改正在加载的请求会发生什么?

请考虑使用前端SPA(单页应用程序(的情况,例如使用angular.js、angular、react和其他的项目&

后端中会发生什么?

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

示例:

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

您可以使用几乎所有的http库来取消请求,特别是使用rxjs的redux observable是一个非常好的选择。

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_canceled操作,例如,在componentWillUnmount中。

我希望能帮助你:(

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

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

最新更新