我有一个api方法,它工作并返回一个int类型。我试图转换得到角度数的响应:
这就是我现在正在做的事情: 请求api:
GetNumberOfPages(topValue: number, companyNamePattern: string) {
return this.http.get<number>(apiUrl + '/getNumberOfPages?topValue=' + topValue +
'&companyNamePattern=' + companyNamePattern, httpOptions)
.pipe(
tap(v => console.log('GetNumberOfPages complete')),
catchError(this.handleError('GetNumberOfPages', []))
);
}
组件中的用法:
getNumberOfPages(topValue, companyNamePattern) {
var numberOfPagesAny: any;
this.api.GetNumberOfPages(topValue, companyNamePattern).subscribe(n => numberOfPagesAny = n);
this.numberOfPages = parseInt(numberOfPagesAny, 10);
console.log(this.numberOfPages + " number")
console.log(numberOfPagesAny + " any")
}
使用Observable时,可以进行异步调用。只有在您收到答复后才会调用订阅。
这意味着您在进入订阅之前处理了console.log()!
所以你确实得到了页面数,如果你想检查它,你应该在你的订阅中添加一个console.log:
this.api.GetNumberOfPages(topValue, companyNamePattern).subscribe(n => { numberOfPagesAny = n, console.log("Number of page"+numberOfPagesAny);});
见:https://angular.io/guide/observables#observables
您需要将您的进程置于订阅中,或使用回调函数。