guzzle promises 中 "always()" 的等价物是什么?
What is the equivalent of "always()" in guzzle promises?
我有一些使用 guzzle 5 的代码,我正在尝试将其升级到 guzzle 6。guzzle 6 的变化之一是它不再使用 react/promise
library and instead uses its own promise library。我的理解是两者不能互换。
有代码使用 react/promise
中的 always()
函数,如下所示:
$promise->then(
// function
)->otherwise(
// function
)->always(
// function
);
我遇到的问题是 guzzle promises 没有 always()
函数。根据 react/promise
documentation,此函数以类似于 try
/catch
/[ 中的 finally
块的方式充当承诺链的清理=17=]序列。
我如何模拟这个?
将 always 中的代码放在 then 和 otherwise 中
您可以创建一个从 \GuzzleHttp\Promise\Promise
扩展的 Promise class
class ReactCompatiblePromise extends \GuzzleHttp\Promise\Promise {
public function always(callable $always)
{
return $this->then($always, $always);
}
}
但不幸的是,您无法设置 guzzle 项目中使用的 Promise class。
创建的所有承诺将始终是 \GuzzleHttp\Promise\Promise
的实例
如果您不介意做一些骇人听闻的事情,那么您可以复制一份文件,进行修改并自动加载您的文件。
保留原始 class 名称 (Promise
) 和命名空间 \GuzzleHttp\Promise
,不要扩展或使用原始 \GuzzleHttp\Promise\Promise
class.
假设您使用的是 Composer,您可以更新 composer.json 文件以包含
{
"autoload": {
"classmap": ["ReactCompatiblePromise.php"]
}
}
我有一些使用 guzzle 5 的代码,我正在尝试将其升级到 guzzle 6。guzzle 6 的变化之一是它不再使用 react/promise
library and instead uses its own promise library。我的理解是两者不能互换。
有代码使用 react/promise
中的 always()
函数,如下所示:
$promise->then(
// function
)->otherwise(
// function
)->always(
// function
);
我遇到的问题是 guzzle promises 没有 always()
函数。根据 react/promise
documentation,此函数以类似于 try
/catch
/[ 中的 finally
块的方式充当承诺链的清理=17=]序列。
我如何模拟这个?
将 always 中的代码放在 then 和 otherwise 中
您可以创建一个从 \GuzzleHttp\Promise\Promise
class ReactCompatiblePromise extends \GuzzleHttp\Promise\Promise {
public function always(callable $always)
{
return $this->then($always, $always);
}
}
但不幸的是,您无法设置 guzzle 项目中使用的 Promise class。
创建的所有承诺将始终是 \GuzzleHttp\Promise\Promise
如果您不介意做一些骇人听闻的事情,那么您可以复制一份文件,进行修改并自动加载您的文件。
保留原始 class 名称 (Promise
) 和命名空间 \GuzzleHttp\Promise
,不要扩展或使用原始 \GuzzleHttp\Promise\Promise
class.
假设您使用的是 Composer,您可以更新 composer.json 文件以包含
{
"autoload": {
"classmap": ["ReactCompatiblePromise.php"]
}
}