首页 > 解决方案 > 如何通过 Angular 中的回调函数格式化 API 响应

问题描述

我想通过回调函数格式化我的 API 响应并获取角度订阅中的数据

我用过mergemap,但没用

this.http.get('https://some.com/questions.xml', {headers, responseType: 'text'})
  .mergeMap(
    res => xml2js.parseString(
      res,
      { explicitArray: false },
      (error, result) => {
        if (error) {
          throw new Error(error);
        } else {
          console.log(result);
          return result;
        }
      }
    )
  ).subscribe(
    data => { console.log("response", data); },
    error => { console.log(error); }
  );

我想在订阅中获取响应 JSON,但我收到 TypeError:您在预期流的位置提供了一个无效对象。您可以提供 Observable、Promise、Array 或 Iterable。

标签: angulartypescript

解决方案


就像 xdeepakv 提到的,在使用时mergeMap or switchMap ...etc,你应该返回一个 promise 或 observable。Whilexml2js.parseString(...)属于SAXParser. 因此,您应该使用map.

或者,您可以查看有关如何转换为承诺的这个stackoverflow 问题。parseString(...)


推荐阅读