2017-10-16 6 views
0

私のイオンアプリケーションにfirebaseのダウンロードデータを管理することには少し問題があります。例えばionicでデータをダウンロードする方法2

:[ようなコード以下のような】通常の場合には、ダウンロードデータは

enter image description here

constructor(...){ 
    this.questionsList = this.afd.list('/questions/'); 
} 

[例えば、この画像のよう]正常であるが、私が使用される場合、「のsetInterval」[例えばコードは以下のように]、例えばこの画像等のデータの増加[]

enter image description here

constructor(...){ 
    this.questionsList = this.afd.list('/questions/'); 
    this.favoritesList = this.afd.list('/favorites/',{ 
     query:{ 
      orderByChild:'user_id', 
      equalTo: userService.id, 
     } 
    }) 

    this.joinObjects(); 
    this.refreshIntervalId=setInterval(()=>{ 
     this.joinObjects(); 
    },250); 
} 

joinObjects(){ 
    let TempListX=[]; 
    this.favoritesList.take(1).subscribe(data1=>{ 
     this.questionsList.take(1).subscribe(data2=>{ 
      TempListX = data1.slice(0); 
      for(let i=0; i<data1.length; i++){ 
       for(let j=0; j<data2.length; j++){ 
        if(data1[i].question_id==data2[j].$key){ 
         TempListX[i].qTitle=data2[j].title; 
        } 
       } 
      } 
      if (JSON.stringify(TempListX)===JSON.stringify(this.TempFavoritesList)) { 
      }else{ 
       this.TempFavoritesList=TempListX.slice(); 
      } 
     }) 
    }) 
} 
のダウンロード

ダウンロードデータを通常のようにする方法はありますか?

+0

一度フェッチすると、250ミリ秒ごとに何かをフェッチすると、より高いネットワークアクティビティがあるのか​​と尋ねていますか? – David

+0

はい。私はドンしません。なぜ私が新しい配列を作るために "subscribe"を使った時にネットワークの使用量が増えたのか分かりません。まだこの問題を解決する方法がわかりません –

+1

firebase obメソッドを呼び出すたびにデータを取得しています。 – David

答えて

1

ここで要求されたのは、リファクタリングされたコードです。私はそれをテストしなかったと言わなければならないが、それは概念を概説するべきである。メソッドjoinObjects()は、更新された値/リストが到着するたびに呼び出され、固定間隔ではオーバーヘッドが多く発生します。私が追加された新しいインスタンス変数に注目してください、私はfavoritesList$questionsList$にあなたの観測に改名することを(ドルサフィックスは、それが)、サブスクリプション、値(観測可能ではない...であることを示すことをお勧めします。

public questions; 
public favorites; 

constructor(...) { 
    this.questionsList$ = this.afd.list('/questions/'); 
    this.favoritesList$ = this.afd.list('/favorites/', { 
    query: { 
     orderByChild: 'user_id', 
     equalTo: userService.id, 
    }, 
    }); 

    this.questionsList$.subscribe(updatedList => { 
    this.questions = updatedList; 
    this.joinObjects(); 
    }); 

    this.favoritesList$.subscribe(updatedList => { 
    this.favorites = updatedList; 
    this.joinObjects(); 
    }); 
} 

joinObjects() { 
    let TempListX = []; 
    TempListX = this.questions.slice(0); 
    for (let i = 0; i < this.questions.length; i++) { 
    for (let j = 0; j < this.favorites.length; j++) { 
     if (this.questions[i].question_id == this.favorites[j].$key) { 
     TempListX[i].qTitle = this.favorites[j].title; 
     } 
    } 
    } 
    if (JSON.stringify(TempListX) === JSON.stringify(this.TempFavoritesList)) { 
    } else { 
    this.TempFavoritesList = TempListX.slice(); 
    } 
} 

+0

ありがとうv.much、今私はそのアイデアを理解しました...私はいくつかのチュートリアルを読んでいますが、私はこの点を理解していませんでしたv.well .. –

+0

私はあなたを助けてくれると嬉しいです! – David

関連する問題