我正在努力将观察力转化为承诺。我知道任何toPromise()
都有observable
函数,但是当我使用此函数时,它会返回ZonedAwarePromise
个属性:
__zone_symbol_state: null
和__zone_symbol_value: Array[0]
此外,承诺的then
部分永远不会被解雇。
具体情况
我想发送一个http-api-request,它读取一个文件并在Promise中返回它的内容:
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
部分工作。
提前感谢您的任何帮助和想法!
答案 0 :(得分:0)
new Promise
回调中的:
public getData(fileName: string): Promise<any> {
return new Promise( (resolve, reject) => {
this.getHomeDirectory().then(homedir => {
const fullFileName = homedir + fileName;
const myApiRequest = "..." + fullFileName;
this.http.get(myApiRequest)
.map(this.extractData)
.catch(this.handleError)
.subsucribe(data => {
resolve(data )
});
});
}
}