如何在进行多个 api 调用时选择最新的 api 调用
How to pick latest api call when multiple api call were made
当多次 API 调用重复进行时,我们 运行 遇到了一个问题 UI 有时会呈现错误的数据。
示例:
onPageLoad
事件我有 5 API 个电话,我们有日期选择器,我们可以从那里 select 日期。当用户尝试更改日期 select 或将进行所有 5 API 调用以刷新数据假设最初我 select 最后一天编辑并且页面已加载,现在我更改为上周然后一个月然后回到最后一天现在有 15 个异步 API 调用并且在 UI 我们正在渲染最近到达的 API 调用(因为 JS 中的异步行为). angular 中是否有任何机制来控制这种行为。
预计:
在上面的示例中,我只想显示 UI 中最新的 API 调用数据(无论承诺何时得到解决)我只想显示最后一天的数据。
使用此代码,之前的任何 api 调用都将被拒绝。这意味着只有最后一次通话才能解决。
var timeout;
function callApi() {
// Cancel any previous api call:
timeout && timeout.resolve();
// Create a new timeout:
timeout = $q.defer();
// Make the api call, passing in the timeout:
return $http.get('/api', {timeout: timeout.promise});
}
当多次 API 调用重复进行时,我们 运行 遇到了一个问题 UI 有时会呈现错误的数据。
示例:
onPageLoad
事件我有 5 API 个电话,我们有日期选择器,我们可以从那里 select 日期。当用户尝试更改日期 select 或将进行所有 5 API 调用以刷新数据假设最初我 select 最后一天编辑并且页面已加载,现在我更改为上周然后一个月然后回到最后一天现在有 15 个异步 API 调用并且在 UI 我们正在渲染最近到达的 API 调用(因为 JS 中的异步行为). angular 中是否有任何机制来控制这种行为。
预计:
在上面的示例中,我只想显示 UI 中最新的 API 调用数据(无论承诺何时得到解决)我只想显示最后一天的数据。
使用此代码,之前的任何 api 调用都将被拒绝。这意味着只有最后一次通话才能解决。
var timeout;
function callApi() {
// Cancel any previous api call:
timeout && timeout.resolve();
// Create a new timeout:
timeout = $q.defer();
// Make the api call, passing in the timeout:
return $http.get('/api', {timeout: timeout.promise});
}