Javascript 如何将http调用的结果形成为方法的结果?
我想将http调用的结果形成为方法的结果。例如: 错误代码: 我知道如何修复上述代码:Javascript 如何将http调用的结果形成为方法的结果?,javascript,angular,Javascript,Angular,我想将http调用的结果形成为方法的结果。例如: 错误代码: 我知道如何修复上述代码: getPersonId(idBook: number): number { return this.mpShipmentWebAPI .GetLast({ bookID: idBook }) .subscribe((books) => { this.handleData(books), });
getPersonId(idBook: number): number {
return this.mpShipmentWebAPI
.GetLast({ bookID: idBook })
.subscribe((books) => {
this.handleData(books),
});
}
我想通过以下方式检查结果:
let idPerson = this.getPersonId(idBook);
if (idPerson > 0) {
//the rest code here
}
有可能吗?这是不可能的,因为http调用是异步的。不建议尝试使它们同步,因为这将冻结所有其他内容。正确的方法是:
getPersonId(idBook: number): Observable<number> {
return this.mpShipmentWebAPI
.GetLast({ bookID: idBook })
.map(books => this.handleData(books));
}
您不能这样做,因为
subscribe
返回一个Observable
,http调用是异步的。
getPersonId(idBook: number): Observable<number> {
return this.mpShipmentWebAPI
.GetLast({ bookID: idBook })
.map(books => this.handleData(books));
}
this.getPersonId(idBook)
.filter(idPerson => idPerson > 0)
.do(idPerson => {
// rest of your code
});