维基百科:在计算机科学里,future、promise和delay指的是在某些并发编程语言里用于同步的构造。它们描述一个为最初未知的结果充当代理的对象,通常因为它的值的计算还是不完整的。
术语future、promise和delay经常可交换地使用,虽然接下来将对待在future和promise之间一些用法上得不同点。具体来说,当用法有区别时,future是只读变量的占位符视图,然而promise是可写的,设置future值的单赋值容器。尤其,future可能定义为不指定具体的设置它的值的promise,和不同的合适的promises可以设置给定的future的值,尽管对于给定的future这只能做一次。在其他情况下future和promise一起创建并且彼此关联:future是值,promise是设置值 —— 本质上是一个异步函数(promise)的返回值(future)的函数。设置future的值也被称为resolving(解析)、fulfilling(实现)或者binding(绑定)它。
实现:Java通过java.util.concurrent.Future、JavaScript从ECMAScript6起等。
非标准库基于futures的实现:
- For JavaScript:
- Cujo.js's when.js provides promises conforming to the Promises/A+1.1 specification.
- The Dojo Toolkit supplies both promises and Twisted style Deferreds
- MochiKit MochKit.Async inspired by Twisted's Deferreds
- jQuery's Deferred Object is based on the CommonJS Promises/Adesign.
- Angularjs
- node-promise
- Q by Kris Kowal, conforms to Promises/A+ 1.1.
- RSVP.js also conforms to Promises/A+ 1.1.
- YUI's Promise class conforms to the Promises/A+ 1.0 specification.
- Bluebird by Petka Antonov
- See Promise/A+'s list for more implementations based on the Promise/A+ design.
- For Java: JDeferred provides Deferred/Promise API and behavior similar to JQuery.Deferred object
- For Java: Guava的com.google.common.util.concurrent.Futures
- For Java: Netty的io.netty.channel.ChannelFuture 和 io.netty.channel.ChannelPromise
暂时整理这部分,后续具体的库和详细的分析留待补充。
相关推荐
通过多个例子,对scala中future 和promise 介绍,和java中的多线程进行对比,生动形象。
未来 Java、Guava 和 Scala 中的 Futures 和 promises
在iOS,macOS,watchOS和tvOS的Objective-C中实现Promises&Futures的轻量级且线程安全的实现,覆盖率达到100%。 总览 承诺表示异步任务的未来价值。 可以将其用作对象,该对象充当最初未知的结果的代理,通常是...
Asynchronous Programming with Futures and Promises Chapter 5. Data-Parallel Collections Chapter 6. Concurrent Programming with Reactive Extensions Chapter 7. Software Transactional Memory Chapter 8. ...
Concurrent Ruby - 现代并发工具。包括agents, futures, promises, thread pools, supervisors。
Futures and Promises Manual error management 安装指导 下载并安装 DMD 2.066.0 from dlang.org 下载病安装 dub 0.9.22-rc.2 from code.dlang.org 使用 Git 克隆代码库 运行 dub test 来测试你的操作...
Coursera 响应式编程原则示例:Futures & Promises、Rx src/test/scala/coursera/adventure包含“冒险游戏”课程的示例代码。 它引入了Try[T] monad,使失败显式。 src/test/scala/coursera/socket包含“网络编程...
##概述#####Hyrax 是Scala 版本,使用 scala Futures/Promises 和 Akka Actors/ActorSystems 作为依赖弹性层。 它使用 Akka IO 来实现远程依赖。 它最初只支持 Web 服务,并使用 Spray 来处理 HTTP 请求/响应。 ...
100%,在MRI 1.9、2.0、2.1、2.2,Rubinius和JRuby上进行了测试。 类似项目: ,受Promises / A(+)启发的实现,基于线程 ,基于线程/互斥/条件变量,线程安全 ,又名有希望的未来,经典的promise and Futures...
Swift中的轻量级功能齐全的Promises,Async和Await库这是什么? Hydra是功能齐全的轻量级库,可让您在Swift 3.x / 4.x中编写更好的异步代码。 它部分基于规范,并且实现了诸如await类的现代结构(如或C#中的),该...
承诺Promises是一个现代框架,为Objective-C和Swift提供了一个同步结构,以方便编写异步代码。
期货Futures是用于Swift中异步编程的轻量级通用库,它提供了一组可互操作的原语,以帮助在服务器,台式机或移动设备上开发高度并发,高性能和安全的程序。 期货对异步编程采用基于“拉”的,需求驱动的方法,该方法...
Swift中最简单的Future and Promises框架。 没魔术没有样板。 概述 在从的Objective-C实现并保持代码简约的同时,此库添加了以下内容: 转换为Swift 4 使用泛型来进行Objective-C不可能进行的大类型推断 全面重构...
许多的语言,为了将异步模式处理得更像平常的顺序,都包含一种有趣的方案库,它们被称之为promises,deferreds,或者futures。JavaScript的promises ,可以促进关注点分离,以代替紧密耦合的接口。 本文讲的是基于...
所有的操作都返回一个Future(http://en.wikipedia.org/wiki/Futures_and_promises),并且可以取消; 3. Socket client socket server 4. HTTP client server 5. WebSocket client server 6. Socket.IO client...
所有的操作都返回一个Future(http://en.wikipedia.org/wiki/Futures_and_promises),并且可以取消; 5. HTTP POST/PUT; 6. 缓存; 7. Gzip/Deflate 压缩 8. 当有多个IP地址时,自动选择最好最稳定的服务器连接;...
使用生成器和 Promises,如 Fibers 和 Futures 使用以下命令运行示例: $ npm install $ node index.js
快速且易于使用的库,用于具有连续性的异步操作启动异步操作时,使用std :: futures和std :: promises存在许多问题。它们需要从堆分配的共享状态,以及引用计数和同步。因此,它们很慢。埃里克Niebler提出了一种快速...
AndroidAsync介绍: AndroidAsync 是一个底层的基于网络协议,提供各种网络通讯服务类库。... 所有的操作都返回一个Future(en.wikipedia.org/wiki/Futures_and_promises),并且可以取消; 3. Socket client + socke
KVNA同步 KVNAsync 是一个轻量级的库,用于处理异步任务和最终值。 KVNAsync 的核心是围绕 Promises 和 Futures 模式构建的。 例子 即将推出…