我有一个返回值的方法,我将返回值赋给变量。函数返回正确的值,但变量未设置返回值。但是如果我在函数中设置this.size
,我会得到适当的值。我从许多函数调用this.searchData
函数,所以我不能这样做(在这种情况下我将不得不使用多if
语句),那么有没有办法从函数中获取返回值。我想用timeout
还有其他方法吗?
searchSize(event): void {
this.sizes = this.searchData(event, AppConsts.size);
}
searchData(event, property): any {
this._serviceProxy.getProperties(
property,
event.query,
event.query
).subscribe((result) => {
console.log(result.items);
return result.items;
});
}
答案 0 :(得分:1)
为了更简洁的代码,您还可以使用async / await语法。 你必须将你的observable转换为promise,然后你可以等待结果:
import * as rx from 'rxjs'
class ListResultDtoOfPropertyDTO{
items: any[]
}
class Test {
sizes: any[];
_serviceProxy : {
getProperties() : rx.Observable<ListResultDtoOfPropertyDTO>
}
async searchSize(event): Promise<void> {
this.sizes = await this.searchData(event);
}
async searchData(event): Promise<any[]> {
var result = await this._serviceProxy.getProperties()
.toPromise()
console.log(result.items);
return result.items;
}
}
说明:
Typescript允许在等待Promise的结果时使用更好的语法。语法不适用于Observables(希望将来它会),但我们可以在这种情况下将Observable转换为promise。有关async / await语法的更多信息,请查看here
答案 1 :(得分:-1)
如何在TypeScript中等待函数的返回?
返回可观察的
return this._serviceProxy.getProperties( // note : return
property,
event.query,
event.query
).subscribe((result) => {
console.log(result.items);
return result.items;
});
}
subscribe
返回的值,例如
searchData(something).subscribe