我正在阅读Promise and Observable,但不确定我的代码是否对angular2 +有效
我在新的http客户端上使用Promise
return new Promise((resolve) => {
this.http
.get('http://x.x.com/api/x/' + x + '/' + x + '/' + x + '', {
headers: this.authenticationService.getAuthorizationHeader()
})
.subscribe(
(data: any) => {
resolve(data.map((row) => {
return new Candlestick(row.time, row.open, row.high, row.low, row.close, row.volume)
}));
},
(error: HttpErrorResponse) => {
if (error.error instanceof Error) {
console.log('An error occurred:', error.error.message);
} else {
console.log(`Backend returned code ${error.status}, body was: ${error.error}`);
}
return resolve();
});
});
这个例子好还是不好?
答案 0 :(得分:3)
代码看起来不错,但是如果您的目的是使用可观察的代码,则可以使用toPromise
this.http
.get('http://x.x.com/api/x/' + x + '/' + x + '/' + x + '', {
headers: this.authenticationService.getAuthorizationHeader()
})
.toPromise()
.then()
另外,在您的代码中,您正在对我不对的错误执行resolve(),我最好将其称为拒绝。
您的代码更有意义,可以说是要重试还是进行其他任何酷的事情,但是如果您需要Promise,请使用toPromise。