2017-05-17 16 views
0

どのように非同期モードを同期モードに変換できますか?購読だけで?私はFirebase APIを使ってFirebaseからデータを取得していて、アプリケーションに表示していますが、非同期モードのため、データが取得される前に表示イベントが発生します。私はAngularFireの使用に移行していますが、AngularFireがデフォルトで非同期を使用しているかどうかはわかりません。プログラムが次のステップを実行する前に、データを待っています。私はIonic2を使用しています.Firebaseに接続し、データを取り出し、プロバイダのローカル配列に ".then"メソッドで格納します。表示ページはプロバイダを注入し、Firebase配列のデータを表示ページに再度ローカルに格納し、html(イオンアイテム)のローカル変数を使用して表示します。基本的には、Firebaseデータを変更したユーザは、データをリフレッシュする必要があります。AngularFire2を使用したIonic Firebaseアプリ

+0

「モード」はありません。 Firebaseは非同期で動作し、データはFirebaseから返されたときにのみ有効です。あなたはそれを計画し、それが返されたらそのデータでのみ作業する必要があります。質問は有効ですが、コードを見ずに本当に答えるのはあいまいです。このガイド[最小限で完全で検証可能な例を作成する方法](0120)を読んでください。 – Jay

+0

ジェイ、助けてくれてありがとう。私は今日いくつかのコードを貼り付け、あなたが提案したリンクをブラウズします。基本的にここに私の意図です。まず、私がページにアクセスするたびに、Firebaseからデータを取得することは望ましくありません。特に、データが変更されない可能性があるため、1日に複数回ページにアクセスするとします。しかし、10人のうち1人がデータを更新すれば、私はalのユーザーに最新のデータを見せたい。 第2に、いくつかのデータを複数のページで利用できるようにし、同じコードを使用する必要があります。 – DKK

+0

私は最初、プロバイダー内にローカルリスト変数を作成し、そのリスト配列を自分のページで使用するプロバイダーに私のコード全体を入れましたが、非同期性のためにページは空のデータを取得します。しかし、約束事(.then)を処理するコードを実際のページに移動すると、ページ内のデータが取得されますが、すべてのページのコードを複製する必要があり、ページを訪問するたびにFirebaseからデータを取得します。 – DKK

答えて

0

これを行う唯一の方法は、以下のようにテンプレートで 'async'を使用することです。ユーザーのリストがある以上

<ion-list> 
    <button ion-item class="center" *ngFor="let user of users | async" (click)="showOptions(user.$key, user.Name)"> 
    {{user.title}} 
    </button> 
</ion-list> 

は、入力します。以下のような「angularfire2 /データベース」から含まれている「FirebaseListObservable」:

import { FirebaseListObservable } from 'angularfire2/database'; 

あなたは正確に何をしている、this tutorialを確認することができます欲しいとの記述にはライブの例があります。

Ionic 3に移行することをお勧めします。これはfirebaseで使用する方がはるかに簡単です。

関連する問題