javascript - 带有端点的 Angular 服务

标签 javascript angularjs angular-services

我刚刚开始 Angular,我想创建一个简单的服务,可以使用我的 api 生成数据。

我有一条返回此的路线:

/ranking/:id 

返回视频游戏结果的排名

[
  { 
    position: 1,
    user: 1234,
    score: 150
  }, {
    position: 2,
    user: 5678,
    score: 100
  }
 ...
]

然后

/users?ids=id1,id2,id3

返回用户数组

[
 {
  id: 1234,
  firstName: 'John',
  lastName: 'Doe'
 },
 ...
]

我想要做的是创建一个函数,该函数可以通过组合端点来显示用户所在的对象数组,这样我就可以获得这样的对象:

 [
  {
   position: 1,
   score: 150,
   firstName: 'John',
   lastName: 'Doe'
  },
  ...
 ]

感谢您的帮助!

最佳答案

这可能有帮助

first inject $q in your service, so you can execute two or more async calls at once.


var rankingsProm = $http.get('rankings endpoint');
var usersProm = $http.get('users endpoint');

$q.all([rankingsProm, usersProm]).then(function (responses) {
   console.log("result of $q.all", responses)
   // responses[0] => rankings and responses[1] => users
   console.log(mergeRankingWithUsers(responses[0], responses[1]))
})


function mergeRankingWithUsers (rankings, users) {
  var merged = rankings.map(function (ranking) {
    var index = users.findIndex(function (user) { return user.id === ranking.user; });
    ranking.firstName = index > -1 ? users[index].firstName : 'unknown';
    ranking.lastName = index > -1 ? users[index].lastName : 'unknown';
    return ranking;
  })
  return merged;
}

关于javascript - 带有端点的 Angular 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43939968/

相关文章:

Angular 2 服务错误。找不到原因

php - 在 $.ajax() 函数中访问两个不同的数组

javascript - 如何检测HTML5视频是否暂停缓冲?

javascript - ngif 中的 Angular 自定义指令 - 设置其绝对儿子的宽度

angularjs - 如果我不需要范围,可以替代 ng-repeat

javascript - 奇怪的 AngularJS 错误

javascript - 如何使变量的值等于 JavaScript 中文本字段的内容?

javascript - 你能说这是 Javascript Closure 的一个正确的例子吗?我们需要考虑避免闭包的地方在哪里?

javascript - ng-show 在隐藏之前是可见的

javascript - AngularJS - UI 路由器 - 以编程方式添加状态