让我们想象一个请求正在加载,并且页面(组件)改变了正在加载的请求的状态?
请考虑使用前端SPA (单页应用程序),例如具有 angular.js,angular,react 等项目的项目。 &&
以及后端会发生什么?
答案 0 :(得分:1)
一旦从SPA触发了请求,它将一直保持打开状态,直到获得后端的响应或连接终止为止。终止可以通过多种方式发生,例如:
答案 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中。
希望对您有所帮助:)