首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >离子3 angularfire2码到离子4 angularfire2码

离子3 angularfire2码到离子4 angularfire2码
EN

Stack Overflow用户
提问于 2018-11-26 05:11:35
回答 1查看 38关注 0票数 1

我的代码有离子3角5,如下所示

代码语言:javascript
复制
getUser(uid:string){
    console.log('start of getUser with uid:' + uid)
    return new Promise((resolve, reject) =>
      {
        this.db.object("/users/" + uid).snapshotChanges().map(
          (snapshot) => {return snapshot.payload.val()}
        ).subscribe(
          res => {
            console.log('response:' + res)
            resolve(res)
          },
          err => {
            console.log(err)
            reject(err)
          }
        )
      })
  }

然而,对于离子4,.map不再起作用。如何转换此代码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-26 05:20:01

就像你能看到这里一样

从5.5版开始,我们提供了"pipeable运算符“,可以在rxjs/操作符中访问它(注意复数的”操作符“)。这是一种比在rxjs包中找到的“修补程序”操作符更好地吸引您需要的操作符的方法。 注意:使用rxjs或rxjs/操作符而不对构建过程进行更改可能会导致更大的包。

现在您可以像这样使用map()

代码语言:javascript
复制
// RxJS
import { map } from 'rxjs/operators/map';

// ...

getUser(uid:string){
    console.log('start of getUser with uid:' + uid)
    return new Promise((resolve, reject) => {
        this.db.object("/users/" + uid)
            .snapshotChanges()
            .pipe(
                map((snapshot) => {
                    return snapshot.payload.val();
                })
            )
            .subscribe(
                res => {
                    console.log('response:' + res)
                    resolve(res)
                },
                err => {
                    console.log(err)
                    reject(err)
                }
            )
    })
}

与问题本身无关,但以防万一,如果希望getUser()方法返回承诺,也可以使用RXJS运算符(而不是创建和解决承诺),如下所示:

代码语言:javascript
复制
// RxJS
import { map } from 'rxjs/operators/map';
import { tap } from 'rxjs/operators/tap';   

// ...

public getUser(uid: string): Promise<any> {
    console.log('start of getUser with uid:' + uid)

    return this.db
        .object("/users/" + uid)
        .snapshotChanges()
        .pipe(
            map((snapshot) => {
                return snapshot.payload.val();
            }),
            tap((response) => {
                console.log('response:' + response);
            })
        )
        .toPromise()
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53475074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档