2017-10-25 9 views
0

データベースからアイテムを取得しています(フィードであるため)検索する順番になっている必要があります。今、私はクエリから配列を取得し、マップします。結局のところ、これは完了した - それは、フィードオブジェクトを順不同で表示します。ここに私のコードは次のとおりです。イメージが異なる速度でたびにロードされている、とマップがで順序を保存することになっているにもかかわらず、彼らのロード時間に何とかによるオーダーの外にマップされていることを推測約束事でマッピングされた後に返されるアイテム - イオン/角型/ Typescript

let cacheKey = 'promos'; 
    let promises_array:Array<any> = []; 
    let mapped; 
    this.cache.removeItem(cacheKey); 

    this.cache.getItem(cacheKey).catch(() => { 
     let store = []; 

     this.list2 = this.af.list('/promos', { 
     query: { 
     limitToLast: 10 
     }}); 

     this.subscription4 = this.list2.subscribe(items => { 
     mapped = items.map((item) => { 
      return new Promise((resolve,reject) => { 
      let storageRef = firebase.storage().ref().child('/settings/' + item.customMetadata.username + '/profilepicture.png'); 

      storageRef.getDownloadURL().then(url => { 
       console.log(url + "in download url !!!!!!!!!!!!!!!!!!!!!!!!"); 
       item.customMetadata.picURL = url; 
       store.push(item.customMetadata); 
       resolve(); 
      }).catch((e) => { 
       console.log("in caught url !!!!!!!$$$$$$$!!"); 
       item.customMetadata.picURL = 'assets/blankprof.png'; 
       store.push(item.customMetadata); 
       resolve(); 
      }); 


      }) 
     }) 

     console.log(JSON.stringify(mapped) + " mappped things"); 



     this.startAtKey = items[0].$key; 
     this.lastKey = this.startAtKey; 

     let results = Promise.all(mapped); 
     results.then(() => { 
     //setTimeout(() => { 

      this.items = store.reverse(); 
      //this.classesListArray.reverse(); 
      console.log(JSON.stringify(this.items) + " value value vlaue items"); 
      return this.cache.saveItem(cacheKey, this.items); 
     //}, 3000); 

     }) 
     }) 
    }).then(data => { 
     this.items = data; 
    }) 

イムアレイ。もう1つのことは、リクエストから戻ってくるものが実際に配列であるかどうかはわかりません。添え字の中にtypeof itemsを記録すると、objectが返されますが、JSON.stringifyでは配列構造が表示されます。これが順序を失う理由ですか?実際に配列ではありませんか?

答えて

0

あなたがそれらをすべて手にした後でただ注文してください。

store.sort((a,b) => { 
    return a.prop - b.prop; 
}); 
関連する問題