✏️ 编辑:Deferred.php
路径:
/home/forge/kingkrunch.com/wp/wp-content/plugins/woocommerce/lib/packages/GraphQL/Deferred.php
大小:1.41 KB · 修改:2026-07-15 13:50:33 · 权限:0644 · 可写
← 返回目录
👁 查看
⬇ 下载
<?php declare(strict_types=1); namespace Automattic\WooCommerce\Vendor\GraphQL; use Automattic\WooCommerce\Vendor\GraphQL\Executor\Promise\Adapter\SyncPromise; use Automattic\WooCommerce\Vendor\GraphQL\Executor\Promise\Adapter\SyncPromiseQueue; /** * User-facing promise class for deferred field resolution. * * @phpstan-type Executor callable(): mixed */ class Deferred extends SyncPromise { /** * Executor for deferred promises. * * @var (callable(): mixed)|null */ protected $executor; /** * Create a new Deferred promise and enqueue its execution. * * @api * * @param Executor $executor */ public function __construct(callable $executor) { $this->executor = $executor; SyncPromiseQueue::enqueue(function (): void { $executor = $this->executor; assert($executor !== null, 'Always set in constructor, this callback runs only once.'); $this->executor = null; try { $this->resolve($executor()); } catch (\Throwable $e) { $this->reject($e); } }); } /** * Alias for __construct. * * @param Executor $executor * * @deprecated TODO remove in next major version, use new Deferred() instead */ public static function create(callable $executor): self { return new self($executor); } }
💾 保存
取消
保存为 UTF-8,换行统一为 LF