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);
    })
}

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

4

1 に答える 1

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)
}

お役に立てれば

于 2016-11-21T06:25:51.483 に答える