Angular 角度2-可观察到承诺失败

Angular 角度2-可观察到承诺失败,angular,promise,rxjs,observable,angular2-http,Angular,Promise,Rxjs,Observable,Angular2 Http,我正在努力把一个可观察的转变成一个承诺。我知道在任何可观察的上都有toPromise()函数,但当我使用此函数时,它会返回我ZonedAwarePromise,并带有以下属性: \uuuuu zone\u symbol\u状态:null和\uuuu zone\u symbol\u值:数组[0] 而且,承诺的部分永远不会被解雇 具体情况 我想发送一个http api请求,该请求读取一个文件并将其内容返回到Promise中: public getData(fileName: string): Pro

我正在努力把一个可观察的转变成一个承诺。我知道在任何可观察的
上都有
toPromise()
函数,但当我使用此函数时,它会返回我
ZonedAwarePromise
,并带有以下属性:

\uuuuu zone\u symbol\u状态:null
\uuuu zone\u symbol\u值:数组[0]

而且,承诺的
部分永远不会被解雇

具体情况

我想发送一个http api请求,该请求读取一个文件并将其内容返回到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);
        });
    }
}
我已经尝试过不同的变体,比如用
resolve(…)
Promise.resolve(…)
替换
return
,现在我不知道如何正确地履行这个承诺,以便让
部件正常工作


提前感谢您的帮助和想法

新承诺
回调中,您必须解决:

 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 )
                        });
        });
    }
}
公共getData(文件名:string):承诺{ 返回新承诺((解决、拒绝)=>{ 这个.getHomeDirectory().then(homedir=>{ const fullFileName=homedir+fileName; const myApiRequest=“…”+完整文件名; this.http.get(myapirest) .map(此.extractData) .接住(这个.把手错误) .subsucribe(数据=>{ 解析(数据) }); }); } }
新承诺
回调中,您必须解决:

 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 )
                        });
        });
    }
}
公共getData(文件名:string):承诺{ 返回新承诺((解决、拒绝)=>{ 这个.getHomeDirectory().then(homedir=>{ const fullFileName=homedir+fileName; const myApiRequest=“…”+完整文件名; this.http.get(myapirest) .map(此.extractData) .接住(这个.把手错误) .subsucribe(数据=>{ 解析(数据) }); }); } }
感谢您的回答,不幸的是,它似乎永远不会得到解决。我不知道为什么,但显然请求没有响应(甚至没有错误)任何想法?感谢您的回答,不幸的是,它似乎永远不会得到解决。我不知道为什么,但显然请求没有响应(甚至没有错误)有什么想法吗?您是否检查了网络选项卡以查看实际接收的内容?
Array[0]
会向我建议您的请求/响应处理中出现了一些奇怪的情况:)您是否检查了网络选项卡以查看实际接收的内容?
Array[0]
会告诉我,您的请求/响应处理过程中出现了一些奇怪的情况:)