因为getter包含异步操作,所以无法直接重试。
string
. 如果将异步操作包装在匿名函数中,则该函数调用将返回
Promise<string>
. 这意味着属性的类型将是
承诺<字符串>
getter单独工作,因为属性类型
承诺<字符串>
这不是问题。如果您还有一个setter,并且setter的参数的类型与
get
.
您可以创建一个
承诺<字符串>
相反。
class ConfigStoreController {
GetConfigParameter(p: string): Promise<string> {
return Promise.resolve(p)
}
SetConfigParameter(p: string, value: string): Promise<void> {
return Promise.resolve(void 0)
}
get debugMode() {
return this.GetConfigParameter("debugMode");
}
set debugMode(value: Promise<string>) {
// There is no way to wait for this operation to finish from the outside, this might be an issue
// Also unhandled errors from the anonymous method are not handled and are not propagated to the caller, since the set is async
(async () => this.SetConfigParameter("debugMode", await value))();
}
}
一个更好的解决办法是离开吸气剂
set
方法代替:
class ConfigStoreController {
GetConfigParameter(p: string): Promise<string> {
return Promise.resolve(p)
}
SetConfigParameter(p: string, value: string): Promise<void> {
return Promise.resolve(void 0)
}
get debugMode() {
return this.GetConfigParameter("debugMode");
}
async setDebugMode(value: string) {
this.SetConfigParameter("debugMode", await value)
}
}