gandung / promise
PHP中的Promise A+实现
Requires
- php: >=5.6.0 || >=7.1.0
- gandung/task-queue: ^1.0
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is auto-updated.
Last update: 2024-09-12 17:34:02 UTC
README
这是PHP中的Promises/A+实现。它能够不可变地处理Promise链,直到所有上下文处理器都从执行上下文中移除。
特性
- Promises/A+实现。
- Promise的解析和链式调用是迭代处理的。
API
Deferred
快速开始
use Gandung\Promise\Deferred; $deferred = new Deferred(); $deferred->resolve('success.'); $deferred->promise()->then( function($d) { echo sprintf("%s" . PHP_EOL, $d); }, function($e) { echo sprintf("%s" . PHP_EOL, $e); } );
由于Promise状态已满足,将打印 "success."。
use Gandung\Promise\Deferred; $deferred = new Deferred(); $deferred->reject('fail.'); $deferred->promise()->then( function($d) { echo sprintf("%s" . PHP_EOL, $d); }, function($e) { echo sprintf("%s" . PHP_EOL, $e); } );
由于Promise状态已拒绝,将打印 "fail."。
Deferred方法
promise()
描述
能够返回不可变Promise对象,当当前值为null时。
返回值
返回deferred的Promise。
resolve($value)
描述
解析由方法promise()
返回的Promise。所有消费者都会通过调用$onFulfilled
(他们通过$promise->then()
注册)并传递$value
来被通知。
返回值
无
reject($reason)
描述
拒绝由promise()
返回的Promise,表示deferred的计算失败。所有消费者都会通过调用$onRejected
(他们通过$promise->then()
注册)并传递$reason
来被通知。
返回值
无
Promise
快速开始
use Gandung\Promise\Promise; $promise = new Promise(); $promise->then( function($d) { echo sprintf("%s" . PHP_EOL, $d); }, function($e) { throw new \Exception($e); } );
Promise方法
then(callable $onFulfilled, callable $onRejected)
描述
将满足和拒绝处理器追加到Promise中,并返回一个由调用处理器返回值解析的不可变新Promise。
返回值
不可变新Promise。
resolve($value)
描述
使用给定的'$value'满足Promise
返回值
无
reject($reason)
描述
使用给定的'$reason'拒绝Promise
返回值
无
currentState()
描述
返回Promise的状态。Promise状态的列表可以在'PromiseInterface'类中找到。
返回值
可以是STATE_PENDING、STATE_FULFILLED或STATE_REJECTED
wait()
描述
同步等待当前Promise完成其未满足的任务。
返回值
返回当前已解析的Promise值。
cancel()
描述
可以取消当前最活跃的Promise及其所有尚未解析的祖先,并将当前最活跃的Promise状态设置为拒绝。这意味着当前最活跃的Promise将无法使用。
返回值
返回当前已取消的Promise值。它可能抛出一个异常。
setWaitCallback(\Closure $callback = null)
描述
设置等待回调处理器。
返回值
无
setCancelCallback(\Closure $callback = null)
描述
设置取消回调处理器。
返回值
无
FulfilledPromise与Promise相同
快速开始
use Gandung\Promise\FulfilledPromise; $promise = new FulfilledPromise('the quick dirty brown fox.'); $promise->then(function($d) { echo sprintf("%s" . PHP_EOL, $d); });
RejectedPromise与Promise相同
快速开始
use Gandung\Promise\RejectedPromise; $promise = new RejectedPromise('the quick dirty brown fox.'); $promise->then(null, function($e) { throw new \Exception($e); });
贡献者
许可证
BSD 3-Clause许可证
版权所有 (c) 2017, Paulus Gandung Prakosa。保留所有权利。
重新分发和使用源代码和二进制代码,无论是否修改,只要满足以下条件
-
源代码重新分发必须保留上述版权声明、本条件列表和以下免责声明。
-
二进制代码重新分发必须在文档和/或其他与分发提供的材料中复制上述版权声明、本条件列表和以下免责声明。
-
未经事先书面许可,不得使用版权所有者的名称或其贡献者的名称来认可或推广由此软件派生出的产品。
本软件由版权所有者和贡献者提供,“现状”且不承担任何明确或隐含的保证,包括但不限于对适销性和特定用途适用性的隐含保证。在任何情况下,版权所有者或贡献者均不对因使用本软件而产生的任何直接、间接、偶然、特殊、示范性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论损害是否由其造成,以及基于任何责任理论,包括合同、严格责任或侵权(包括疏忽或其他)。