Я борюсь с преобразованием наблюдаемого в обещание. Я знаю, что для любого observable
есть функция toPromise()
, но когда я использую эту функцию, она возвращает мне ZonedAwarePromise
со свойствами:
__zone_symbol_state: null
и __zone_symbol_value: Array[0]
Кроме того, часть обещания then
никогда не срабатывает.
Конкретная ситуация
Я хочу отправить http-api-запрос, который читает файл и возвращает его содержимое внутри обещания:
public getData(fileName: string): Promise<any> {
return new Promise( (resolve, reject) => {
this.getHomeDirectory().then(homedir => {
const fullFileName = homedir + fileName;
const myApiRequest = "..." + fullFileName;
return this.http.get(myApiRequest)
.map(this.extractData)
.toPromise()
.catch(this.handleError);
});
}
}
Вызов этого обещания так:
const fileName = '...';
this.fileService.getData(fileName).then( content => {
console.log(content); // never gets fired!
});
Я уже пробовал разные варианты, такие как замена return
на resolve(...)
или Promise.resolve(...)
, и теперь я понятия не имею, как правильно выполнить это обещание, чтобы часть then
заработала.
Заранее спасибо за любую помощь и идеи!
Array[0]
предположил бы, что в обработке вашего запроса/ответа происходит что-то странное :) - person AJT82   schedule 13.03.2017