gpt4 book ai didi

javascript - Angular promise : get data from buffer if available

转载 作者:行者123 更新时间:2023-11-28 15:30:00 26 4
gpt4 key购买 nike

在此场景中,如果数据不在缓冲区中,则要求通过 Http 请求获取数据。如果它在缓冲区中,则从那里使用它,而不需要 Http 请求。

我尝试了下面的代码,但没有多大意义;如果数据在缓冲区中,我不知道是否应该从函数返回而不执行任何操作或返回延迟的 promise 。有什么想法吗?

  var dataBuffer = null;

var getData = function() {

var deferred = $q.defer();

if (dataBuffer != null) { // this is the part I'm not convinced
deferred.resolve();
return;
}


$http.get('/some/url/')
.success(function(data) {
dataBuffer = data;
deferred.resolve();
})
.error(function(data) {
deferred.reject();
});

return deferred.promise;
};

通过以下方式调用:

     var promise = getData();
promise.then (
function(response) {
dataBuffer = .... // dataBuffer contains data
}
);

最佳答案

当您不确定正在执行的代码是否异步时,有一种干净简单的方法可以使用 Promise,并且它使用 $q.when所以代码可以是:

var getData = function() {
return $q.when(dataBuffer ? dataBuffer: $http.get('/some/url'))
};

然后,在调用 getData 时,您可以使用您发布的相同代码,或者只是简单地使用:

getData()
.then(function(response){//...
})
.catch(function(err){//..
});

关于javascript - Angular promise : get data from buffer if available,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27749511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com