AngularJS получить значение из API, только если еще не установлено - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть служба для получения некоторых данных из API и передачи их в приложение. Простая функция, подобная этой:

getEnvironmentStatus() {
    var _this = this;
    var req = {
        method: "GET",
        url: "/api/system/hosting",
        headers: {},
        data: {}
    }
    return _this.$http(req);
}

В каком-то другом месте у меня есть:

determineHostingEnv() {
    var _this = this;
    this.$env.getEnvironmentStatus()
    .then(function(response){
        _this.EnvHositng = response.data.cloud_hosted;
     }, function(error) {
    }); 
}

Если мне нужна та же информация в другом месте (другом контроллере), мне нужно вызвать api снова.

Как я могу заставить функцию getEnvironmentStatus () вызывать API только один раз и сохранять данные в локальной переменной, чтобы она могла обслуживать эту переменную в следующий раз, когда ее запрашивают, вместо вызова API? Кроме того, что если это значение будет запрошено несколько раз, прежде чем первый API вернет значение? Могу ли я предотвратить вызов этого API несколько раз?

1 Ответ

1 голос
/ 15 февраля 2020

Можно кешировать обещание:

httpPromiseCache = null;

getEnvironmentStatus() {
    var _this = this;
    var req = {
        method: "GET",
        url: "/api/system/hosting",
        headers: {},
        data: {}
    }
    if (!_this.httpPromiseCache) _this.httpPromiseCache = _this.$http(req);
    return _this.httpPromiseCache;
}

Служба выполнит HTTP-запрос только один раз.

...