Return coroutines, will implement object access in promises in amphp
This commit is contained in:
parent
383f3baff0
commit
c66e1fcbef
@ -203,14 +203,10 @@ final class Coroutine implements Promise, \ArrayAccess
|
|||||||
*/
|
*/
|
||||||
public function offsetGet($offset)
|
public function offsetGet($offset)
|
||||||
{
|
{
|
||||||
$deferred = new Deferred;
|
return Tools::call((function () use ($offset) {
|
||||||
$this->onResolve(static function ($e, $v) use ($deferred, $offset) {
|
$result = yield $this;
|
||||||
if ($e) {
|
return $result[$offset];
|
||||||
return $deferred->fail($e);
|
})());
|
||||||
}
|
|
||||||
$deferred->resolve($v[$offset]);
|
|
||||||
});
|
|
||||||
return $deferred->promise();
|
|
||||||
}
|
}
|
||||||
public function offsetSet($offset, $value)
|
public function offsetSet($offset, $value)
|
||||||
{
|
{
|
||||||
@ -239,25 +235,17 @@ final class Coroutine implements Promise, \ArrayAccess
|
|||||||
*/
|
*/
|
||||||
public function __get(string $offset)
|
public function __get(string $offset)
|
||||||
{
|
{
|
||||||
$deferred = new Deferred;
|
return Tools::call((function () use ($offset) {
|
||||||
$this->onResolve(static function ($e, $v) use ($deferred, $offset) {
|
$result = yield $this;
|
||||||
if ($e) {
|
return $result->{$offset};
|
||||||
return $deferred->fail($e);
|
})());
|
||||||
}
|
|
||||||
$deferred->resolve($v->{$offset});
|
|
||||||
});
|
|
||||||
return $deferred->promise();
|
|
||||||
}
|
}
|
||||||
public function __call(string $name, array $arguments)
|
public function __call(string $name, array $arguments)
|
||||||
{
|
{
|
||||||
$deferred = new Deferred;
|
return Tools::call((function () use ($name, $arguments) {
|
||||||
$this->onResolve(static function ($e, $v) use ($deferred, $name, $arguments) {
|
$result = yield $this;
|
||||||
if ($e) {
|
return $result->{$name}($arguments);
|
||||||
return $deferred->fail($e);
|
})());
|
||||||
}
|
|
||||||
$deferred->resolve($v->{$name}(...$arguments));
|
|
||||||
});
|
|
||||||
return $deferred->promise();
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Get stacktrace from when the generator was started.
|
* Get stacktrace from when the generator was started.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user