我有这个函数:
private async get(iD: string): Promise<Function> {
return async () => {
const tallConfig = await longCrudService.getHalf(iD);
const stream: Stream = tallConfig.stream;
const response = this.createUrl(tallConfig, stream);
return response;
};
}
有没有一种方法可以在不使用双异步的情况下重写它,比如有没有一个方法可以通过只使用函数的异步并删除内部异步来重写它?
当您需要直接在内部使用await
时,才可以使用async
。由于您不是为外部函数这样做的,所以可以删除它——只有内部函数在使用await
。
private get(iD: string): Promise <Function> => async () => {
const tallConfig = await longCrudService.getHalf(iD);
const stream: Stream = tallConfig.stream;
const response = this.createUrl(tallConfig, stream);
return response;
}
如果需要,也可以完全删除async
,以换取.then
。
private get(iD: string): Promise <Function> => () => longCrudService.getHalf(iD)
.then(tallConfig => this.createUrl(tallConfig, tallConfig.stream));
不需要可以重写的内部函数:
private async get(iD: string): Promise<Function> {
const tallConfig = await longCrudService.getHalf(iD);
const stream: Stream = tallConfig.stream;
return this.createUrl(tallConfig, stream);
}
确保调用者不需要另一个函数调用,因为这将返回函数签名上指定的promise。