微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Rxjs 中 map 操作符中大括号内的 body 和圆括号内的 body 代表什么?

如何解决Rxjs 中 map 操作符中大括号内的 body 和圆括号内的 body 代表什么?

我在应用程序中有 2 个 API 调用。我在一次调用中看到了地图运算符的大括号内的 body,例如 ma​​p(({ body }: any) => {this.assembleOrder(body.data)})body 在第二次调用中地图运算符中的圆括号内,例如 ma​​p((body: any) => this.assembleOrder(body.data))。它们有什么区别?

代码

public getorder$(orderID: string): Observable<OrderModel[]> {
return this.http
  .get(`${this.Url}?orderID=${orderID}`,{ observe: 'response' }
  )
  .pipe(
    map(({ body }: any) => {this.assembleOrder(body.data)})
  );
  }  
 

public upgradeOrder$(Order: OrderModel): Observable<OrderModel> {
return this.http
    .post(`${this.Url}deals/copy/${Order.id}/upgrade`,null)
    .pipe(
        map((body: any) => this.assembleOrder(body.data))
    );      
}

解决方法

您看到的语法称为 Object Destructuring。这是分配来自对象属性的变量的速记语法。

以下是从“用户”对象定义 3 个常量的示例:

const id   = user.id;
const name = user.name;
const age  = user.age;

使用对象解构,这可以在一行中实现:

const { id,name,age } = user;

在没有大括号的示例中:

map((body: any) => this.assembleOrder(body.data))

没有解构,所以 body 参数只是从你的 http 调用中获取响应。

在带有大括号的示例中:

map(({ body }: any) => {this.assembleOrder(body.data)})

使用了解构,因此 body 从 http 响应的 body 属性接收值。

没有解构,它看起来像:

map((response: any) => {this.assembleOrder(response.body.data)})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。