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);
});