通常我会看到在 vert.x verticle 的开头使用promise或future,它们之间有什么特定的区别吗? 我已经阅读了Scala语言中它们的区别,那在Vert.x的情况下也是一样吗? 此外,我应该知道何时使用 promise 或 future?
Promise用于定义非阻塞操作,它的future()方法返回与promise相关联的Future对象,以便在promise完成时得到通知并检索其值。 Future接口是可能已经发生或尚未发生的操作的结果。
虽然其他答案已经用不同的措辞表达了相同的意思,但我还是想帮助您。假设您正在封装一些旧的API(例如基于回调的API)以使用Futures,则可以像这样操作:
Future<String> getStringFromLegacyCallbackAPI() {
Promise<String> promise = Promise.promise();
legacyApi.getString(promise::complete);
return promise.future();
}
Given the new Promise / Future APIs the start(Future<Void>) and stop(Future<Void>) methods have been deprecated and will be removed in Vert.x 4.