2016-11-21 10 views
2

私はイオン2プロジェクトに取り組んでいます。私はデバイス/電話のすべての連絡先を返すことができます。しかし、一度に1つのリクエストがあるため、パフォーマンスが非常に遅い約束コードを使用しました。さて、私はその約束するコードを観測可能なものに変更したい。これを解決するために私を助けてください。約束を観測可能に変換する方法は?

findContact(searchKey){ 
    if(searchKey.target.value == "" || searchKey.target.value == undefined || searchKey.target.value == null){ 
     this.contactSelected = false; 
    } else{ 
     this.contactSelected = true; 
    } 
    let options = { 
     multiple: true, 
     hasPhoneNumber: true, 
     filter: searchKey.target.value 
    } 
    let cantactFields = ['displayName', 'phoneNumbers']; 
    Contacts.find(cantactFields, options).then(res => { 
      this.contactResults = res; 
    }, (er) => { 
     console.log(er); 
    }) 
} 

は私が約束を使った方法です。そして、このメソッドは非常にゆっくりと連絡先を返します。

+0

あなたはおそらく、XYの問題を抱えているのに役立ちます。約束と観測可能なものは、同時に複数の要求を処理することができます。質問には関連するコードは表示されません。 – estus

答えて

3

あなたが使用できるObservable.fromPromiseあなたの約束を目に見える形で包む。

このようなことは、あなたの約束を目に見える形で包むために行うことができます。

findContact(searchKey){ 
    if(searchKey.target.value == "" || searchKey.target.value == undefined || searchKey.target.value == null){ 
     this.contactSelected = false; 
    } else{ 
     this.contactSelected = true; 
    } 
    let options = { 
     multiple: true, 
     hasPhoneNumber: true, 
     filter: searchKey.target.value 
    } 
    let cantactFields = ['displayName', 'phoneNumbers']; 
    var promise =Contacts.find(cantactFields, options).then(res => { 
     this.contactResults = res; 
    }, (er) => { 
     console.log(er); 
    }) 
    return PromiseObservable.create(promise); //  Observable.fromPromise(promise) 
} 

ホープこれは、観測をして助けることができる何もない、この方法は「遅い」であれば

+0

このコードを自分のコードに置き換えてください。 –

+0

@CharanCherryコード –

+0

を更新しました。同じ結果が出ると思います。あなたは約束でリクエストを送信しているからです。それからあなたは応答を観測可能に戻します。私は正しい? –

関連する問題