私はJavascriptの約束を理解するように近づいていると思いますが、for
ループに関する新しい問題があります。私は別のSpotify URIをフィードする関数を持っています.2番目のメソッドはトラック情報を取得してから、配列に含まれるように戻ります。これまでのところ、私はBluebirdライブラリを使用するソリューションを見つけていましたが、AngularJSを使用する場合、統合はかなり簡単ではありません。
私は基本的にデータに解決されない約束を取り戻しています。
これは、サービスで第二の機能にデータを送り、私のコントローラ内の関数である:他の側に
$scope.getUserRecent = function() {
var id = window.localStorage.getItem('id');
return UserService.getTracks(id).then(function (data) {
var tracks = {}, i;
console.log(data);
for (i = 0; i < data.length; i++) {
tracks[i] = SpotifyService.getTrack(i, data[i].uri, data[i].loved, data[i].from);
console.log(i + ": " + tracks[i]);
}
console.log(tracks);
return tracks;
})
.catch(function (error){
console.log(error);
});
};
機能がダウンしてデータを引っ張って、絶対に正常に動作し、それが必要として、それを返します。しかし、約束は解決されていません。これをどうすれば解決できますか?
編集:$scope.getUserRecent()
からアクセス:
$scope.refresh = function() {
$q.all($scope.getUserRecent()).then(function (data) {
console.log(data);
$scope.tracks = data;
})
.catch(function (error) {
console.log(error);
});
$scope.$broadcast('scroll.refreshComplete');
};
$scope.$on('$ionicView.enter', function (e) {
$scope.refresh();
});
UserService.getTracks(id)
リターン:
[Object, Object]
0:Object
from:"string"
id:1
loved:true
sharerId:1
uri:"6mNMp0g3zkg1K7uBpn07zl"
__proto__:Object
1:Object
from:"string"
id:2
loved:true
sharerId:1
uri:"14WWzenpaEgQZlqPq2nk4v"
__proto__:Object
length:2
__proto__:Array[0]
'UserService.getTracks()'が返すものを示してください。 'SpotifyService.getTrack()'は非同期になり、 'tracks'オブジェクトのプロパティも決して設定しないことに注意してください。また、 'getUserRecent()'の使い方が分かりません – charlietfl
Angularには '$ q.all'があり、bluebirdには' Promise.all'があります。 – Bergi
@charlietflはあなたのためにいくつかの詳細を追加しました。 –