使用获取http响应信息更新承诺值

时间:2017-05-29 15:16:54

标签: javascript rxjs

我以这种方式从我的服务器检索json数据:

const stream = Observable.fromPromise(fetch('http://...')).flatMap(response => response.json())

现在我想将一些http响应属性合并到返回的值中。

下面的代码实际上不起作用。属性似乎是合并到promise本身而不是它的值......

const stream = Observable.fromPromise(fetch('http://...')).flatMap(response => {
  const data = response.json()
  return {
    ...data,
    responseStatus: {
      code: response.code,
      text: response.text,
    }
  }
)

有些事我不明白..

2 个答案:

答案 0 :(得分:0)

.json()回复承诺! (感谢@ Felix-Kling提示)

const stream = Observable.fromPromise(fetch('http://...')).flatMap(response =>
  Observable.from(response.json()).map(data => ({
    ...data,
    responseStatus: {
      code: response.status,
      text: response.statusText,
    },
  }))
)

如果您有更好/其他答案,请添加评论

答案 1 :(得分:-1)

希望这会对你有所帮助,flatMap会对结果值的承诺变平,在下一个运算符中你会得到一个带有resp和json的元组

    public DoubleValueWithUnit ToDoubleValueWithUnit()
    {
        return new DoubleValueWithUnit(Convert.ToDouble(Value), Unit);
    }