javascript - 如何让多个指令仅调用一次服务中的同一个 promise ?

标签 javascript angularjs

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

另外,很抱歉,我无法提供我的代码。这只是一个调用 promise 的服务,然后像这样返回

服务:

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()多次访问它

var promise = null;

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

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

关于javascript - 如何让多个指令仅调用一次服务中的同一个 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38002656/

相关文章:

javascript - 图像(绝对定位)在相对定位容器中水平居中

javascript - 我们可以从 typescript 代码更改图像源吗?

javascript - 如何在javascript中开发正则表达式?

javascript - 将外部模块中的提供程序注入(inject)配置 block 时出现未知提供程序错误

css - 没有dom元素的 Angular 模板条件逻辑

javascript - AngularJS Kendo 模板不工作

javascript - 奇怪的问题 - 更改事件仅在 IE 中的调试下触发

javascript - Mongoose find() 不适用于 $not 查询

javascript - ionic select 不更新依赖于范围变量的函数

javascript - 使用 Angularjs 将当前选项卡设置为事件选项卡