【问题标题】:How to merge two responses and return it to promise?如何合并两个响应并将其返回给承诺?
【发布时间】:2019-01-26 18:48:21
【问题描述】:

我打了两个电话,我看到 firstCallData 打印数据很好,但是当我做 += 合并响应时,它返回我下面的 Response 添加到问题中,有什么更好的方法来完成这项任务?

main.ts

let data = await this.processResponse(__data.Details[0]);

    console.log("firstCallData" , data);

    data += await this.orderResponse(__data.Details[1]);

    console.log("DATA", data);
    return Promise.resolve(data);

回复:

[object Object][object Object]

【问题讨论】:

  • + 不合并对象。根据您实际尝试执行的操作,您可能需要Object.assign()
  • 感谢它与 spread const newItem = { ...data_0, ...data_1}; 一起使用的提示

标签: javascript arrays typescript async-await


【解决方案1】:

我会使用Object.assign() (MDN link)。

Object.assign() 方法用于将所有可枚举自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

一个例子:

let data1 = await this.processResponse(__data.Details[0]); //let's say this promise returns {foo: 4, bar: 49}

console.log("firstCallData" , data1);

let data2 = await this.orderResponse(__data.Details[1]); //and this one returns {baz: 69, bar: 42}

data = Object.assign(data2, data1);

console.log("DATA", data);
return Promise.resolve(data);

它将“合并”对象并返回:

{foo: 4, bar: 49, baz: 69}

请注意,对于重叠属性,它会选择源对象 data1 而不是目标对象 (data2)。

【讨论】:

    猜你喜欢
    • 2021-12-15
    • 2019-07-07
    • 1970-01-01
    • 2020-07-18
    • 2019-11-17
    • 1970-01-01
    • 2016-11-28
    • 2020-10-23
    • 1970-01-01
    相关资源
    最近更新 更多