如何将承诺转换为可观察的?

时间:2016-11-21 05:44:57

标签: angular ionic2 angular2-observables

我正在研究离子2项目。我可以返回设备/手机中的所有联系人。但我使用的承诺代码由于一次只有一个请求而性能非常慢。现在,我希望将承诺代码更改为可观察的代码。请帮我解决这个问题。

Contacts.find()

window是我使用承诺的方法。此方法非常缓慢地返回联系人。

1 个答案:

答案 0 :(得分: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)
}

希望这个HElps