0
我想這可能是一個相當普遍的問題,但在這種情況下,我使用AngularJS和SoundCloud API。如何進行分頁API調用直到達到最終?
這裏的流量:
- 呼叫
loadTracks()
loadTracks()
應一次裝載的SoundCloud用戶,50的軌道,直到列表用完。loadTracks()
通過調用另一個函數,sc.getTracksByUser(id)
,它返回一個承諾執行此loadTracks()
應該更新變量$scope.tracks
與每個50軌道批次當它到達
的的SoundCloud API提供了一個選項offset
,所以裝載批次相對容易。我認爲這是讓我絆倒的承諾。如果沒有承諾,解決辦法是:
$scope.tracks = [];
var loadTracks = function() {
var page = -1,
done = false,
newTracks;
while (!done) {
newTracks = getFiftyTracks(page++);
for (var i = 0; i < newTracks.length; i++) {
$scope.tracks.push(newTracks[i]);
}
if (newTracks.length < 50) done = true;
}
}
不幸的是,在它getFiftyTracks
該行是不是它是如何工作。實際的實現(使用承諾)是:
sc.getTracksByUser(id).then(function (response) {
for (var i = 0; i < response.length; i++) {
$scope.tracks.push(response[i]);
}
}
我猜這個解決方案是某種遞歸,但我不確定。
您還沒有確定是什麼問題。 'getTracksByUser'的聲明在哪裏。你不需要傳遞一個'page'嗎? – charlietfl
如何將頁碼或偏移量傳遞給getTracksByUser? –