HTTP-запрос Angular2 HTTP с использованием наблюдаемых подписок показывает данные как "неопределенные"

Я размещаю данные с помощью Angular 2 в URL, который возвращает ответ XML, я хочу преобразовать данные в JSON, поэтому я использую xml2js.

Преобразование происходит нормально, но я получаю "данные" как неопределенные в блоке "подписка". Пожалуйста, поправьте меня, если я ошибаюсь, я предполагаю, что xml2js является асинхронной операцией, а 'data' не определена. Итак, как мне справиться с ситуацией обещания обещания и правильно вернуть преобразованные данные 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);              
 });

Буду признателен за любую оказанную помощь. Спасибо!

1 ответ

Решение

Если предположить, 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);              
 });
Другие вопросы по тегам