Concat json to promise:如何从promise挂起的json对象中获取额外的键值对
Posted
技术标签:
【中文标题】Concat json to promise:如何从promise挂起的json对象中获取额外的键值对【英文标题】:Concat json to promise: How to get additional key value pair in json object from promise pending 【发布时间】:2021-09-25 15:49:48 【问题描述】:我手动将一个 json 对象连接到一个 Promise。下面第一次打印的代码 cosole.log(new_response) 让我得到了这个,这就是我想要的
Promise <pending>, a: '123'
但是,第二次打印 cosole.log(data_json_array) 让我得到没有键值的 json 对象,a: '123'
我不知道这是为什么。我希望 json 对象包含键值 a: '123' 例如:
key1: "1",
key2: "2",
a: "123
提前致谢。
Promise.all(somefunction(parameter)).then(function (responses)
return Promise.all(responses.map(function (response)
new_json = a: "123"
var new_response = Object.assign(response.json(), new_json)
console.log(new_response)
return new_response
.then(function (data)
console.log(data)
)
【问题讨论】:
someFunction 是返回单个承诺还是一组承诺? Promise.all 通常用于一系列承诺。 因为response.json()
也是一个承诺。
@AlexanderStaroselsky 这取决于我调用了多少个网址。如果有两个 url,则返回 Promise 稍微不同的方法可能涉及更新someFunction
以处理 json() 并处理将数据与提供的 url 合并。这可以帮助避免嵌套Promise.all
:
function someFunction(parameter)
// create array of promises
return parameter.urls.map((url) =>
fetch(url)
// parse JSON
.then((res) => res.json())
// Merge data with url property
.then((data) => ( ...data, url ))
);
Promise.all(
someFunction(
urls: [
"https://jsonplaceholder.typicode.com/todos/1",
"https://jsonplaceholder.typicode.com/todos/2",
],
)
).then((data) => console.log(data));
希望对您有所帮助!
【讨论】:
谢谢!我会看看如何集成到我的代码中,让你知道结果。非常感谢。 太棒了。关键是您可以在 someFunction 中做更多事情,因为它创建了承诺并具有参数。您始终可以在消费者中执行附加对象分配以合并其他数据,但这样您就不必在消费者级别处理 json()。 回来说声谢谢!我已成功集成到我的代码中! @Alexander Staroselsky以上是关于Concat json to promise:如何从promise挂起的json对象中获取额外的键值对的主要内容,如果未能解决你的问题,请参考以下文章
Promise Catch 在 json rpc 调用中未收到错误
如何返回 Promise.all 获取 api json 数据?
如何在 bigquery 中使用 group_concat 生成 json 字符串?