python的(fork of)promises/a+实现

async-promises的Python项目详细描述


承诺

这是python中promises的实现。这是一套很好的 promises/a+设计为具有可读性、可执行的代码并提供 只是在 Python。

这个分叉是为了使它与Promise/A+ spec完全兼容

完成promise PR #20后, 这个叉子的维修费将被取消。

travispypicoveralls

安装

$ pip install async_promises

使用量

下面的示例演示如何加载Async_Promises库。那么 演示如何从头开始创建异步承诺。你只要打电话 Promise(fn)。对于返回的内容有一个完整的规范 用这种方法 Promise/A+

fromasync_promisesimportPromiseasync_promises=Promise(lambdaresolve,reject:resolve('RESOLVED!'))

api

在所有示例之前,您需要:

fromasync_promisesimportPromise

承诺(分解器)

这创造并回报了一个新的承诺。resolver必须是函数。 resolver函数传递了两个参数:

  1. resolve应该用一个参数调用。如果它被称为 有了非承诺价值,承诺就实现了 价值。如果它是用承诺(a)调用的,那么返回的承诺 承担新承诺的状态。
  2. reject应该用一个参数调用。返回的 这个论据会否定诺言的。

类方法

这些方法通过调用Promise.methodName来调用

承诺。决心(价值)

将价值观和国外承诺转换为承诺/a+承诺。如果你 传递一个值,然后返回该值的承诺。如果你通过了 接近承诺的东西(例如 promise)返回一个承诺,其状态为value (拒绝或满足)。

承诺。拒绝(价值)

返回具有给定值的拒绝承诺

承诺。全部(列表)

返回列表的承诺如果用一个参数调用它 然后返回一个带有任何承诺的列表副本的承诺 取而代之的是他们实现的价值观例如

p=Promise.all([Promise.resolve('a'),'b',Promise.resolve('c')]) \
       .then(lambdares:res==['a','b','c'])assertp.get()isTrue
承诺、承诺(obj)

如果可能,此函数将obj包装为PromisePython Futures受支持,当 断然的。

承诺。对于dict(d)

一种特殊的功能,它把承诺的字典翻过来 成为一本价值字典的承诺。换句话说,这就变成了 价值承诺词典 价值观。

实例方法

通过调用promise实例调用这些方法 myPromise.methodName

异步承诺。然后(完成时,拒绝时)

此方法遵循Promise/A+ spec。它解释了 事情很清楚,所以我建议你读一下。

将调用on_fulfilledon_rejected,它们将 不能被多次呼叫。他们将通过一个单一的论点 将始终异步调用(在事件的下一轮中 循环)。

如果实现了承诺,则调用on_fulfilled。如果 承诺被拒绝,然后调用on_rejected

.then的调用也返回一个promise。如果 called返回一个promise,由.then返回的promise接受 承诺的状态如果调用的处理程序返回 不是Promise的值,由.then返回的Promise将是 实现了这个价值。如果被调用的处理程序抛出 异常,则.then返回的承诺将被拒绝 例外。

异步承诺。捕获(被拒绝)

糖,async_promises.then(None, on_rejected),镜像catch在 同步代码。

异步承诺。完成(完成时,拒绝时)

.thenexce相同的语义它不归还承诺 任何异常都会被重新抛出,以便记录下来(崩溃 非浏览器环境中的应用程序)

其他套餐功能

可以(obj)

此函数检查objPromise还是 promisify编辑

注释

这个包裹里有大量的汗液。 aplus

许可证

MIT License

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java HttpClient:禁用分块编码   java在Junit 4中构建测试套件   安卓 studio活动之间的java进度条   java从云Firestore获取地图数据   AmazonWebServices为什么JavaWebSocket服务器这么慢?   java My代码违反了DRY原则,但不确定如何进行重构   java在Eclipse动态Web项目中包含HTML文件   java检查首次启动安卓时是否在活动上单击了按钮   用@XmlElementRef注释的java元素没有显示在JAXB编组字符串中?   线程“main”java中的eclipse异常。lang.ClassNotFoundException:oracle。jdbc。OracleDriver Jdbctype4test。类型4测试。main(Type4test.java:21)   java如何将表单数据从HTML提交到某人的Skype帐户   java如何使用图形“g”?   java构建文件不是gradle中设置文件定义的构建的一部分   java用迭代优化HashMap   java在jsp中使用jstl访问结果集   java实现OOP中的等式优先度   java ChromeDriver组织。openqa。硒。遥远的协议握手会话   用Java程序读取Java的属性文件   java TabHost和Fonthouse图标   在Java中将灰度转换为颜色渐变?