angular - 如何将 Promise 转换为 Observable?

标签 angular ionic2 angular2-observables

我正在从事 ionic 2 项目。我能够返回设备/手机中的所有联系人。但我使用的 promise 代码由于一次只有一个请求而性能非常慢。现在,我想将该 promise 代码更改为可观察的代码。请帮我解决这个问题。

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() 是我使用 promise 的方法。而且这个方法返回联系人的速度非常慢。

最佳答案

您可以使用 Observable.fromPromise 将您的 Promise 包装在 observable 中。

类似这样的事情可以将你的 promise 包装在可观察中。

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

希望这有帮助

关于angular - 如何将 Promise 转换为 Observable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40713514/

相关文章:

angular - ngx-leaflet Leaflet, Angular 5 批来自 zone.js 的函数调用

angular - ngx-bootstrap 的 datePicker (onShown) 事件在日历真正显示之前被触发

javascript - Ionic 2 上的 NavPush 中包含对象时出现间歇性错误

angular - RxJS - 将发出的值映射到多个 Http 请求的组合输出

javascript - 图表不反射(reflect)事件条目,除非我在标记中将其设置为 array.slice() - 这将禁用选择点 - Stackblitz inside

angular - Dexie - 检查记录是否存在,如果不存在则初始化它

google-maps - ionic 2/3 : Is it possible to open google map APP by passing custom lat- long?

cordova-plugins - 如何在cordova/ionic(2)中获取fileEntry然后使用readAsText?

node.js - 无法从串联的 Observable 中提取/解开值

angular - 订阅方法不对更改使用react[Angular 2]