我正在尝试使用Angular实现一个测试应用程序。问题场景是我需要执行Get并基于从该Get请求获得的数据返回一个值。见下文:
public getNextId(entityName: string): number {
console.info('Retrieving next ID for ' + entityName);
let seqId: SeqId;
const url = `${this.apiURL}/${entityName}`;
console.info('SeqID URL: ' + url);
this.http.get<SeqId>(url)
.subscribe((data: SeqId) => seqId = data); -> 1
/*Do something with seqId */ -> 2
return seqId.nextEntityId;
}
问题是(2)在(1)之前执行。达到(2)时,尚未设置seqId变量。
如何使用同一方法执行Get,处理检索到的数据并返回某些内容?
预先感谢
答案 0 :(得分:0)
您需要从此处返回可观察对象,而不是订阅
GetData() {return this.http.get<SeqId>(url)
.pipe(map(data: SeqId) => seqId = data);
}
然后在控制器中,订阅此方法并执行所需的操作