Javascript 我怎么能让多个指令在一个服务中调用同一个承诺,只调用一次?

Javascript 我怎么能让多个指令在一个服务中调用同一个承诺,只调用一次?,javascript,angularjs,Javascript,Angularjs,因此,我有多个自定义指令在服务中的同一个函数中调用承诺,该服务使用承诺获取数据。服务中的这个函数被命中4次(因为有4个指令调用它)。这就是问题所在。我只想让它被调用一次,而不是四次。我该怎么做 另外,很抱歉,我不能提供我的代码。这只是一个服务,要求承诺,然后像这样返回 服务: return { GetData: function() { return processData.then(function(response){ return response });

因此,我有多个自定义指令在服务中的同一个函数中调用承诺,该服务使用承诺获取数据。服务中的这个函数被命中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
})

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


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

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


访问该变量的第一个指令将设置PROMICE变量,所有其他指令将访问相同的PROMICE

为什么不在控制器内调用该特定函数,将控制器作用域上检索到的数据存储在作用域变量中,并将该变量绑定到指令,而不是在每个指令中调用该函数?此外,您还可以在指令中添加
ng if=“dataReady”
,以便仅在数据可用时添加这些指令。这也是一个面向爱好者和专业开发人员的网站,我们希望保持其专业性。使用所有的大写和类似“lol”的东西都不是这样。为什么不在控制器内调用该特定函数,将控制器作用域上检索到的数据存储在一个作用域变量中,并将该变量绑定到指令,而不是在每个指令中调用该函数?此外,您还可以在指令中添加
ng if=“dataReady”
,以便仅在数据可用时添加这些指令。这也是一个面向爱好者和专业开发人员的网站,我们希望保持其专业性。使用所有的大写字母和像“lol”这样的东西并不是这样。
var promise = null;

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