Tag: 未来

如何等待几个期货

假设我有几个未来,需要等到他们中的任何一个失败或者全部成功。 例如:假设有3个期货: f1 , f2 , f3 。 如果f1成功, f2失败,我不等f3 (并返回失败的客户端)。 如果f2在f1和f3仍在运行时失败,我不等它们(并返回失败 ) 如果f1成功,然后f2成功,我继续等待f3 。 你将如何实现它?

期货与承诺

我对未来和承诺之间的区别感到困惑。 显然,他们有不同的方法和东西,但是实际的用例是什么? 是吗?: 当我pipe理一些asynchronous任务时,我将来会用“未来” 当我是asynchronous任务时,我使用promise作为返回types,以允许用户从我的承诺中获得未来

斯卡拉:列出和未来无视未来的未来

我正在寻找一种方法将任意长度的期货列表转换为列表的未来。 我正在使用Playframework,所以最终,我真正想要的是一个Future[Result] ,但为了简单起见,让我们只是说Future[List[Int]]正常的方法是使用Future.sequence(…)但有一个转折…我给出的名单通常有大约10-20期货,其中一个期货失败(他们正在提出外部networking服务请求)并不罕见。 如果其中一个失败,我们不必重试所有这些,我希望能够得到那些成功并返回的。 例如,执行以下操作不起作用 import scala.concurrent._ import scala.concurrent.ExecutionContext.Implicits.global import scala.util.Success import scala.util.Failure val listOfFutures = Future.successful(1) :: Future.failed(new Exception("Failure")) :: Future.successful(3) :: Nil val futureOfList = Future.sequence(listOfFutures) futureOfList onComplete { case Success(x) => println("Success!!! " + x) case Failure(ex) => println("Failed !!! " + ex) } scala> Failed !!! java.lang.Exception: Failure 我不希望得到唯一的例外,而是想把1和3拉出来。 我尝试使用Future.fold ,但显然只是在幕后调用Future.sequence […]

Scala中的asynchronousIO与期货

比方说,我正在从某些url上下载(可能很大)的图片列表。 我正在使用Scala,所以我会做的是: import scala.actors.Futures._ // Retrieve URLs from somewhere val urls: List[String] = … // Download image (blocking operation) val fimages: List[Future[…]] = urls.map (url => future { download url }) // Do something (display) when complete fimages.foreach (_.foreach (display _)) 我对Scala有点新鲜,所以对我来说这仍然有点像魔术: 这是正确的做法吗? 任何替代品,如果不是? 如果我有100个图像下载,这将创build100个线程一次,或将使用线程池? 最后一条指令( display _ )是否会在主线程上执行,如果没有,我怎么确定它? 谢谢你的build议!

JavaScript中的Deferred,Promise和Future有什么区别?

递延,承诺和期货有什么区别? 这三者背后有一个普遍认可的理论吗?

如何在NHibernate中加载关联而不重复?

我需要加载一个非常大的对象列表,有很多孩子和孩子的孩子。 最好的方法是什么? 我正在使用Oracle 11g数据库,并且已经编写了下面的方法,但是却导致了笛卡尔积(重复结果): public IList<ARNomination> GetByEventId(long eventId) { var session = this._sessionFactory.Session; var nominationQuery = session.Query<ARNomination>().Where(n => n.Event.Id == eventId); using (var trans = session.Transaction) { trans.Begin(); // this will load the Contacts in one statement nominationQuery .FetchMany(n => n.Contacts) .ToFuture(); // this will load the CustomAttributes in one statement nominationQuery .FetchMany(n => n.CustomAttributes) […]