javascript - AngularJS - 在整个应用程序中访问 promise 数据

标签 javascript angularjs promise

我有一个发出 http get 请求的工厂:

grey.factory('JiraData', function( $http ) {
   return {
      async: function( ) {
         return $http.get( 'js/testdata.json' )
            .then( function( result ) {
               return result.data;
            });
      }
   };
});

我想在我的应用程序中的各种 Controller 和指令中使用上面返回的数据。做这个的最好方式是什么?我可以在本地/ session 存储或根范围内存储和操作数据吗?如果是这样,最好的方法是什么?

最佳答案

如果您正在询问一种调用 http.get 函数的方法,只有一个错误多次访问数据,一种方法是将 promise 保存在一个变量上。

grey.factory('JiraData', function( $http ) {
   var promise;

   return {
      async: function( ) {
         if(!promise) {
            promise =  $http.get( 'js/testdata.json' )
            .then( function( result ) {
               return result.data;
            });

         }
         return promise;
      }
   };
});

然后你可以像这样使用它:

grey.controller('ACtrl', function( Jiradata ) {
  JiraData.async().then(function(returnData) {
      //your code
  });
}

这样http请求只调用一次

关于javascript - AngularJS - 在整个应用程序中访问 promise 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26329229/

相关文章:

angularjs - 在 View 中看不到我的 html 文件

regex - AngularJS忽略字符串中的空格

javascript - 将变量从 Node.js 服务器端 Controller 传递到 Angular.js 客户端 Controller

javascript - 未分配的 Promise 及其关联的处理程序存储在哪里

javascript - Node.js Promise 引用错误

javascript - 在 ember.js 中实现一个 "conditional"后退按钮

javascript - 将所有元素替换为另一个 jquery

javascript - 在 Firefox 中捕获鼠标

javascript - 此 Javascript 代码中的 "scope"和 "context"不同

error-handling - 在 Smalltalk/Pharo 中创建以 block 作为参数的键值消息