如何让多个指令在服务中调用相同的承诺,只需一次?

时间:2016-06-23 22:04:04

标签: javascript angularjs

所以我有一个以上的自定义指令在一个服务中的同一个函数内调用一个promise,它获取带有promise的数据。服务中的这个函数被命中4次(因为4个指令调用它)。这是问题所在。我只想要调用一次,而不是4次。我怎样才能做到这一点?

另外,对不起,我无法提供我的代码。它只是一个服务承诺的服务,然后返回那种类似的

服务:

return {
  GetData: function() {
    return processData.then(function(response){
      return response
    });

processData只是在文件中提前缓存,我在$http.get获取数据。

指令:

serviceName.GetData().then(function(response){
  //Do Stuff and what not
})

1 个答案:

答案 0 :(得分:2)

可以存储promise对象,并且可以使用then()

多次访问它
var promise = null;

return {
  GetData: function() {
    if (!promise) {
      promise = proccessData.then(function(response) {
        return response
      });
    }
    return promise;
  }

访问它的第一个指令将设置promise变量,然后所有其他指令将访问相同的promise