Javascript 如何处理封装函数的承诺

Javascript 如何处理封装函数的承诺,javascript,angular,ionic2,google-cloud-firestore,Javascript,Angular,Ionic2,Google Cloud Firestore,这是一个我一直在努力理解的概念:我有一个服务,其中封装了我的Firestore DB调用。在这个类中,我有一个将文档添加到集合的方法: createOrder(order: Order) { let o = {user: order.user, total: order.total, items: this.parseItems(order.items), uid: order.uid}; this.ordersRef.add(o).then(res => {

这是一个我一直在努力理解的概念:我有一个服务,其中封装了我的Firestore DB调用。在这个类中,我有一个将文档添加到集合的方法:

createOrder(order: Order) {
    let o = {user: order.user, total: order.total, items: this.parseItems(order.items), uid: order.uid};
    this.ordersRef.add(o).then(res => {
        console.log(res)
    }).catch(err => {
        console.log(err)
    });
}
正如您所看到的,我能够在服务类本身中处理承诺。我的问题是:当我从另一个类调用函数时,如何处理该结果?看:

placeOrder() {
  let order = new Order(this.userProvider.getUser(), this.cart.getItems());
  this.orderService.createOrder(order);
}
我想做的是

this.orderService.createOrderorder.thenres=>{}.catcherr=>{}

我怎样才能做到这一点呢?

只要记住这一点,然后也会回报一个承诺。因此,您可以返回整个链条,并且仍然有一个承诺,可以访问:

现在这应该很好:

this.orderService.createOrder(order)
.then(res => {})
.catch(err => {});

为什么你不能简单地返回这个.ordersRef.add?我可能错了,但我认为您所需要做的就是返回res并调用此。orderService。。。。编辑:或者只是后者。@MeirionHughes它就像你和下面的马克说的那样工作,谢谢!
this.orderService.createOrder(order)
.then(res => {})
.catch(err => {});