처럼 검색하고 자동으로 검색되지 않습니다. 이는 이상적으로 필요한 데이터 만 가져와 데이터 트래픽을 줄이고 성능을 향상시키는 것을 의미합니다. 단점은 비동기 방식으로 데이터를 가져 와서 트랙 배열과 앨범 이름을 직접 작성해야한다는 것입니다.
각 트랙에 대해 앨범 이름을 가져 오려는 경우. 이것은 당신이 어떻게 할 것입니다 :
var maxTracks = 15;
var search = Search.search(searchString);
search.tracks.snapshot(0, maxTracks).done(function(snapshot) {
snapshot.toArray().forEach(function(result) {
result.album.load('name').done(function(album) {
// here you have access to the album.name attribute
});
});
}).fail(function() {
console.error('Error retrieving snapshot');
});
그 접근 방식의 문제가 있음을 당신은 트랙이 표시되는 것과 다른 순서로 데이터입니다. 트랙과 같은 순서를 유지합니다 Promise
의 배열을 사용하여
var maxTracks = 15;
var search = Search.search(searchString);
search.tracks.snapshot(0, maxTracks).done(function(snapshot) {
var promises = [];
snapshot.toArray().forEach(function(result) {
promises.push(result.album.load('name'));
});
models.Promise.join(promises)
.done(function(albums) { console.log('Loaded all albums.', albums); })
.fail(function(albums) { console.log('Failed to load at least one album.', albums); });
}).fail(function() {
console.error('Error retrieving snapshot');
});
: 당신이 순서를 유지해야 할 경우에는 Promise
객체를 사용할 수 있습니다.
두 번째 버전은 내 앱에서 잘 작동하는 것으로 보입니다. 약속 사용 방법에 대해 확신하지 못했습니다. – faximan