Javascript承诺并更新变量
Javascript Promises and updating variables
我一直在想办法登录Spotify,并从我的Ionic应用程序中的服务中执行大多数数据检索,但一个承诺导致代码完全暂停。
以下是Controllers.js
:的相关部分
$scope.tracks = [];
$scope.getTracks = function () {
var tracks = {},
i;
for (i = 0; i < Tracks.uris.length; i++) {
console.log('Getting Track ' + i);
tracks[i] = SpotifyService.getTrack(Tracks.uris[i].id, Tracks.uris[i].loved, Tracks.uris[i].from);
}
return tracks;
}
$scope.refresh = function () {
console.log('Refresh Tracks Started');
$scope.tracks = $scope.getTracks().then(function (data) {
console.log('Getting tracks');
return data;
})
.catch(function (error) {
console.log(error);
});
$scope.$broadcast('scroll.refreshComplete');
}
$scope.refresh()
函数发生在拉取刷新操作上。此函数被称为fine,但它在第一个console.log()
之后停止。以下是控制台的摘录(以及其他日志):
2016-04-07 14:30:38.419 HelloCordova[8269:377355] updateInfo() data: [object Object]
2016-04-07 14:30:38.419 HelloCordova[8269:377355] Done updating
2016-04-07 14:30:38.419 HelloCordova[8269:377355] getUser() data: [object Object]
2016-04-07 14:30:38.420 HelloCordova[8269:377355] $scope.load() data: [object Object]
2016-04-07 14:30:41.198 HelloCordova[8269:377355] Refresh Tracks Started
在最后一行之后,没有发生任何其他事情,应用程序处于挂起状态。忽略上面的行,它们与早期的问题有关。
我不确定发生了什么,它应该从Spotify中检索一些曲目数据,但该逻辑都是从从未调用过的$scope.getTracks()
函数中调用的。我做错了什么?
编辑:以下是Services.js
:中的SpotifyService.getTrack
函数
getTrack: function(id, loved, from) {
var storedToken = window.localStorage.getItem('spotify-token');
if (storedToken !== null) {
return trackInfo(id).then(function(data) {
return data;
})
.catch(function(error) {
console.log(error);
});
} else {
login();
}
}
假设SpotifyService.getTrack
返回一个promise,则$scope.getTracks
函数返回一个promise数组。我想你想要的是,一旦收到所有曲目,就分配$scope.tracks
。试试这个:
$q.all($scope.getTracks()).then(function (data) {
console.log('Getting tracks');
$scope.tracks = data;
})
.catch(function (error) {
console.log(error);
});
相关文章:
- React:使用索引变量更新嵌套集合
- 范围变量更新,但不更新视图
- 正在将代码库中的C#变量更新到asp.net
- 使用变量更新剑道图表系列的数据会导致重绘将列从图表上绘制出来
- MongoDB 用变量更新数组
- 将变量更新为函数中的参数
- Javascript-变量更新
- 使用Javascript和PHP变量更新页面上的数据
- Angular js 在
标签上的变量更新$scope动画
- 如何通过参数变量更新对象的属性值
- 如何在范围变量更新时更新模板
- 简单的变量更新和写入页
- 函数在变量更新后的某个时间点执行
- javascript OO如何用一些JSON变量更新self参数
- 使用$set中的变量更新mongodb的node.js
- 将声明的null变量更新为布尔值
- 在查询部分使用变量更新查询
- 如何在回调中使用变量更新文档?
- 通过AJAX用PHP变量更新URL
- 防止在没有javascript的情况下在页面刷新后进行变量更新