我有一个函数调用后端服务并获取数据并在UI中显示。我正在使用angular,这个函数在我的控制器中,我从html调用。因此,每次html更新时,都会进行网络呼叫。
我尝试添加一个控制器级别变量来检查调用是否已在进行中,如果是,则返回其promise或以其他方式再次调用。即使在第一次通话未完成之前,这也会阻止相同的通话重复。
还有其他方法可以在我的项目中处理它。根据我的方法,我必须为个别函数编写
我目前的代码如下
var getDataPromise;
function getData() {
if (getDataPromise) return getDataPromise;
getDataPromise = $http.get('url').then((response) => {
return response;
}).finally(() => {
getDataPromise = null;
})
return getDataPromise;
}
我只想防止网络电话重叠。因为服务器中的数据可能会不时发生变化。
答案 0 :(得分:2)
阻止多个http呼叫的一种方法是取消之前的http呼叫,你可以这样做:
test.service('testService', function ($http,$q) {
var canceler;
var getList = function (data) {
if (canceler)canceler.resolve();
canceler = $q.defer();
return $http.post('www.test.com', data,
{timeout: canceler.promise});
};