在服务中处理 $http 响应

2023-12-03

我最近发布了我面临的问题的详细描述here在这样。因为我无法发送实际的$http请求时,我使用超时来模拟异步行为。在 @Gloopy 的帮助下,从我的模型到视图的数据绑定工作正常

现在,当我使用$http代替$timeout(本地测试),我可以看到异步请求成功并且data我的服务中充满了 json 响应。但是,我的观点没有更新。

更新了普朗克here


这是一个可以做你想要的事情的 Plunk:http://plnkr.co/edit/TTlbSv?p=preview

这个想法是,您直接使用 Promise 及其“then”函数来操作和访问异步返回的响应。

app.factory('myService', function($http) {
  var myService = {
    async: function() {
      // $http returns a promise, which has a then function, which also returns a promise
      var promise = $http.get('test.json').then(function (response) {
        // The then function here is an opportunity to modify the response
        console.log(response);
        // The return value gets picked up by the then in the controller.
        return response.data;
      });
      // Return the promise to the controller
      return promise;
    }
  };
  return myService;
});

app.controller('MainCtrl', function( myService,$scope) {
  // Call the async method and then do stuff with what is returned inside our own then function
  myService.async().then(function(d) {
    $scope.data = d;
  });
});

这是一个稍微复杂的版本,它会缓存请求,因此您只需第一次执行(http://plnkr.co/edit/2yH1F4IMZlMS8QsV9rHv?p=preview):

app.factory('myService', function($http) {
  var promise;
  var myService = {
    async: function() {
      if ( !promise ) {
        // $http returns a promise, which has a then function, which also returns a promise
        promise = $http.get('test.json').then(function (response) {
          // The then function here is an opportunity to modify the response
          console.log(response);
          // The return value gets picked up by the then in the controller.
          return response.data;
        });
      }
      // Return the promise to the controller
      return promise;
    }
  };
  return myService;
});

app.controller('MainCtrl', function( myService,$scope) {
  $scope.clearData = function() {
    $scope.data = {};
  };
  $scope.getData = function() {
    // Call the async method and then do stuff with what is returned inside our own then function
    myService.async().then(function(d) {
      $scope.data = d;
    });
  };
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在服务中处理 $http 响应 的相关文章

随机推荐

  • 使用添加按钮在 React 中添加输入

    我正在尝试制作一组 可以复制或删除的输入 我发现并使用了以下组合 https jsfiddle net 69z2wepo 36745 这是 因为上面的代码不处理删除 https codepen io lichin lin pen MKMez
  • Android:如何使用画布/绘制位图缩放位图以适合屏幕尺寸?

    我正在拍摄图像并使用画布将其绘制到屏幕上 我想根据屏幕尺寸缩放它 这是我尝试过的 但它切断了图像的一大块 DisplayMetrics metrics context getResources getDisplayMetrics int w
  • Sendkeys 在 android appium 驱动程序上失败

    我正在使用 appium 来自动化 Android 应用程序 在这种情况下 无法在以下情况下对文本字段执行 sendkeys 单击添加客户选项 新页面打开 我正在尝试在文本字段中输入值 我能够使用 xpath 找到页面上的文本字段 我可以单
  • spinner If Strings** == 不工作

    为什么这不起作用 if itemx Test number item 0 Log i Dropdown inside if us lo ans hold setText 0x 如果 itemx 是字符串并且它具有字符串 测试编号项目 0 我
  • 在 FSharp 中查找两个数组之间的差异

    我有两个数组 我想在第二个数组中查找不在第一个数组中的元素 我写了以下代码 let array0 A B C let array1 B D E let inZero letter array0 gt Array tryFind fun l
  • 使用 jsoup 解析 JavaScript

    In an HTML页面 我想选择 a 的值javascript多变的 下面是片段HTML page
  • AutoMapper 将 2 个表中的记录连接到单个 IEnumerable 视图模型中

    我有 2 张桌子 比如说T1 and T2 T1包含oID CID 日期 状态 and T2包含cID cName cURL 我为上面两个表设计了类 如下所示 T1 cs public class T1 public int oID get
  • PHP 中的枚举

    我知道 PHP 还没有原生枚举 但我已经习惯了 Java 世界中的它们 我很乐意使用枚举来提供 IDE 的自动完成功能可以理解的预定义值 常量可以解决问题 但是存在命名空间冲突问题 或者实际上because 它们是全球性的 数组不存在命名空
  • 在C#中发送TCP数据包

    我想在 C 中发送 TCP 数据包 带有自定义标头 构建此类数据包没有问题 并且我将数据存储在字节数组中 但是我怎样才能通过套接字发送这个数据包呢 我尝试过这样的事情 using Socket sock new Socket Address
  • 将附加组件集成到自定义 Firefox 版本中

    我正在制作一个自定义的 Firefox 版本 我想将我的附加组件 附加 SDK 集成到构建中 我更喜欢这样做 而不是直接与 Firefox 代码集成 实现这一目标的最佳方法是什么 我正在考虑将其放入 浏览器 扩展 目录 如果这是一个好主意
  • 查找大写字符然后添加空格

    我购买了 SQL World 城市 州数据库 在州数据库中 州名称被集中在一起 示例 北卡罗来纳州 或 南卡罗来纳州 SQL中有没有办法循环查找大写字符并添加空格 这样 北卡罗来纳州 就变成了 北卡罗来纳州 创建这个函数 if object
  • java 8 中箭头运算符内部如何工作? [复制]

    这个问题在这里已经有答案了 我知道箭头的左侧有参数 箭头的右侧是参数所在的函数 但是 我想知道java 8如何映射左侧和右侧并转换为函数 那里会发生什么 我在哪里可以找到信息 当你有一个 gt javac 编译器添加一个包含代码内容的静态方
  • 如何在 React 中下载图像?

    我想尝试通过单击按钮来下载图像 但是当我单击按钮时 它不是下载图像 而是直接打开图像 但是我想下载图片 那么在React中如何下载图片呢 a href https timesofindia indiatimes com thumb msid
  • 如何使用 python pyhs2 连接到 hive?

    我正在尝试使用访问配置单元pyhs2 我尝试了以下代码 示例 py import pyhs2 conn pyhs2 connect host localhost port 10000 authMechanism None user None
  • Shibboleth 可以与 Windows Azure 访问控制服务集成吗?

    我们的两个高等教育客户使用 Shibboleth 进行 SSO 我对 Shib 的经验为零 并且没有可供测试的实例 最终 我们希望将 Shib SSO 与 Windows Azure MVC Web 角色中的这些客户端集成 所以我的问题是
  • 检测数组 vb.net 2005 上重复数字的最快方法

    我有这个项目 让用户输入从 1 到 50 的 5 个不同的数字 但我想在保存到数据库之前验证它 我将是 5 个唯一的数字 最好和最快的方法是什么 您可以使用哈希集 T 的 检查这个 Dim numbers As IEnumerable Of
  • 如何更改面板滚动条的背景颜色?

    因此 我正在为我的应用程序制作一个深色模式选项 并且我希望滚动条的背景颜色也改变颜色 这样它就不会看起来不合适 我试图寻找解决方案 但到目前为止我只找到了控件中滚动条的代码 但我需要更改面板的滚动条 有人知道该怎么做吗 预先非常感谢 当我开
  • 如何将 SecureString 转换为 System.String?

    关于通过创建 System String 来取消 SecureString 的所有保留意见aside 如何做呢 如何将普通的 System Security SecureString 转换为 System String 我相信许多熟悉 Se
  • Cassandra 与日志记录活动

    我将卡桑德拉与昆德拉一起使用 我的问题很简单 有什么方法可以记录所有查询 请求到 Cassandra 吗 我想知道服务器站点上到底发生了什么 Regards Tom 为 org apache cassandra thrift Cassand
  • 在服务中处理 $http 响应

    我最近发布了我面临的问题的详细描述here在这样 因为我无法发送实际的 http请求时 我使用超时来模拟异步行为 在 Gloopy 的帮助下 从我的模型到视图的数据绑定工作正常 现在 当我使用 http代替 timeout 本地测试 我可以