Angular 变量填充后的服务调用

Angular Service call after variable population

我正在尝试创建一个 angular 服务,它包含一个变量,该变量的值将在另一个服务调用的结果之后设置。这是代码:

angular.module("someApp",[]).service("someServiceName", function() {

  var myVar = undefined;

  this.get = function() {
    if (myVar) {
      return myVar
    } else {
      console.error('Error text');
    }
  }

  var init = function () {
    anotherService.call().then(function (result) {
      myVar = result;
    });
  };

  init();
});

当我在应用程序加载后第一次调用 someServiceName.get() 时 return 什么都没有(因为 myVar 尚未填充)。但是在下一个服务中调用它 returns value if myVar 变量。 所以,我的问题是如何 return myVarsomeServiceName.get() 调用但在 运行 init()先?

也许您在 anotherService.call() 结束之前调用了 someServiceName.get();这会给你 undefined.

关于:

angular.module("someApp",[]).service("someServiceName", function($q) {

  var deferred = $q.defer();

  this.get = function() {
     anotherService.call()
       .then(function (result) {
          if (result) {
             deferred.resolve(result);
          } else {
             deferred.reject('Error text');
          }
       }, function (error) {
          deferred.reject('AnotherService error');
       });
     return deferred.promise;
  }
});

在这种情况下,每次要获取他的值时,您都会调用 anotherService