0

我正在使用 Angular 2 将数据发布到返回 XML 响应的 URL,我想将数据转换为 JSON,所以我使用xml2js

转换进行得很好,但我在“订阅”块中得到未定义的“数据”。如果我在拧,请纠正我,我猜因为 xml2js 是一个异步操作,“数据”是未定义的。那么我该如何处理这种承诺的承诺情况并正确返回转换后的 JSON 数据呢?下面的代码:

 this.http.post(this._yourUrl, formdata.toString(), options)
 .map(res => {
        xml2js.parseString( res.text(), function (err, result) {
        console.dir(result); // Prints JSON object!
        return result;
     });
 })
 .subscribe(data => { 
      console.log(data);              
 });

任何帮助深表感谢。谢谢!

4

1 回答 1

3

假设xml2js.parseString是同步操作,

尝试这个:

this.http.post(this._yourUrl, formdata.toString(), options)
 .map(res => {
        var myRes;
        xml2js.parseString( res.text(), function (err, result) {
            console.dir(result); // Prints JSON object!
            myRes = result;
        });
        return myRes;
 })
 .subscribe(data => { 
      console.log(data);              
 });
于 2017-05-08T11:19:40.433 回答