斯卡拉 – “没什么”的承诺永远不会完成?
发布时间:2020-12-16 18:24:10 所属栏目:安全 来源:网络整理
导读:我想知道为什么当我通过“_”作为完成结果时,“没什么”的承诺永远不会完成.当我想使用Promise来表示事情已经完成时,我碰到了这个: val promiseWillFinish = Promise() promiseWillFinish.success(_) // will time out Await.ready(promiseWillFinish,5 sec
我想知道为什么当我通过“_”作为完成结果时,“没什么”的承诺永远不会完成.当我想使用Promise来表示事情已经完成时,我碰到了这个:
val promiseWillFinish = Promise() promiseWillFinish.success(_) // will time out Await.ready(promiseWillFinish,5 seconds) // will return false println(promiseWillFinish.isCompleted) 现在我正在使用一个单位的承诺,它工作正常,也更清晰一点.但我仍然想知道上面的代码在超时/未完成的Promise中结束了. 我用Akka 2.0决赛跑了这个. 解决方法
类型Nothing没有任何可能的值(不为null,根本没有). Nothing的承诺无法完成,就像结果类型的函数一样,Nothing无法返回.
由于没有Nothing类型的值,因此无法称之为成功.事实上,你并没有称之为成功,你误解了_在这里意味着什么: 当您声明一个var(并且仅在声明它时),您可以使用’_’将其设置为默认值. var v:Int = _将v设置为0,var v:String = _将其设置为null.如果您尝试使用Nothing,var v:Nothing = _,它将崩溃.同样,没有Nothing类型的值. 另一方面,当你编写promiseWithFinish.Success(_)时,它是一个快捷方式 x => promiseWithFinish.Success(x) 您正在创建一个函数值,而不是使用它,您什么??都不做. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |