我正在try 设计一个接口来抽象不应该直接从UI中使用的长时间运行的操作.为了抽象它,我创建了一个抽象类,其中只有一个方法可以执行这样的操作:
abstract class MakeSomething {
Result make(Param param);
}
但是,我不能将其标记为async
(try 将其放在签名之前、返回类型之前和分号之前).这是可能的吗?如果是的话,是怎么做的?
我正在try 设计一个接口来抽象不应该直接从UI中使用的长时间运行的操作.为了抽象它,我创建了一个抽象类,其中只有一个方法可以执行这样的操作:
abstract class MakeSomething {
Result make(Param param);
}
但是,我不能将其标记为async
(try 将其放在签名之前、返回类型之前和分号之前).这是可能的吗?如果是的话,是怎么做的?
async
函数几乎总是必须返回Future
.(一个不常见的例外是,async
个函数的返回类型可能为void
,即"fire and forget";在这种情况下,函数完成时没有自动通知调用方的方法.)
如果希望make
函数是异步的,并向调用者提供Result
,那么它必须返回Future<Result>
.
请注意,async
不是函数的类型签名的一部分;async
是函数体中enables the use of await
的上下文关键字.这意味着async
在声明抽象接口时不是很有用.重要的是函数返回Future
,派生类可以 Select 是否使用async
/await
实现该函数.