我正在努力將observable轉換爲承諾。我知道,還有的toPromise()
功能上的任何observable
但是當我使用這個函數返回我ZonedAwarePromise
與性能:Angular 2 - 可以承諾的承諾失敗
__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!
});
我已經嘗試過不同的變化,例如用resolve(...)
或替換,現在我不知道如何正確地履行這個承諾,以獲得then
部分的工作。
非常感謝您的幫助和意見!
你檢查你的網絡選項卡,看到你實際接收什麼? 'Array [0]'會告訴我,你的請求/響應處理中有一些奇怪的事情:) – Alex