Javascript 使用获取http响应信息更新承诺值
我通过以下方式从服务器检索json数据:Javascript 使用获取http响应信息更新承诺值,javascript,rxjs,Javascript,Rxjs,我通过以下方式从服务器检索json数据: const stream = Observable.fromPromise(fetch('http://...')).flatMap(response => response.json()) 现在我想将一些http响应属性合并到返回值中 下面的代码实际上不起作用。属性似乎合并到承诺本身,而不是它的价值 const stream = Observable.fromPromise(fetch('http://...')).flatMap(respon
const stream = Observable.fromPromise(fetch('http://...')).flatMap(response => response.json())
现在我想将一些http响应属性合并到返回值中
下面的代码实际上不起作用。属性似乎合并到承诺本身,而不是它的价值
const stream = Observable.fromPromise(fetch('http://...')).flatMap(response => {
const data = response.json()
return {
...data,
responseStatus: {
code: response.code,
text: response.text,
}
}
)
有一点我不明白。希望这对您有所帮助,flatMap将把承诺平坦化为结果值,在下一个操作符中,您将收到一个带有resp和json的元组
Observable
.fromPromise(fetch('yourUrl'))
.flatMap(resp => resp.json()()
.map(data => ({
...data,
responseStatus: {
code: data.code,
text: data.text,
}
}))
.json()
返回承诺!(感谢@Felix Kling的提示)
如果您有更好的/其他答案,请添加评论。
.json()
返回承诺。谢谢!因此,我从.json()
创建了一个新的observable,并将属性与map操作符合并。它是有效的,但我不知道它是否是最好的解决方案,因为对于初学者来说,经常使用rx!对不起,你的回答错了。第二个map fn参数是索引。更正后,奇怪的“:any”会产生一个异常。@TeChn4K我使用的是typescript抱歉,我更新了回复。仍然存在一个问题:由于flatMap返回响应值,所以在map函数中响应状态不可用。。。
const stream = Observable.fromPromise(fetch('http://...')).flatMap(response =>
Observable.from(response.json()).map(data => ({
...data,
responseStatus: {
code: response.status,
text: response.statusText,
},
}))
)