Skip to content

Commit 838e13c

Browse files
committed
Added await() method
1 parent c2c7fd7 commit 838e13c

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

src/Loop.php

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,27 @@ public function sleep(int|float $seconds)
3939
}
4040
}
4141

42-
public function defer(callable $callable): void
42+
public function await(callable|Fiber $fiber): mixed
4343
{
44-
$this->callStack[] = new Fiber($callable);
44+
if(!($fiber instanceof Fiber)){
45+
$fiber = new Fiber($fiber);
46+
}
47+
$fiber->start();
48+
while ($fiber->isTerminated() === FALSE) {
49+
$fiber->resume();
50+
51+
if(!$fiber->isTerminated()){
52+
Fiber::suspend();
53+
}else{
54+
break;
55+
}
56+
}
57+
return $fiber->getReturn();
58+
}
59+
60+
public function defer(callable|Fiber $fiber): void
61+
{
62+
$this->callStack[] = ($fiber instanceof Fiber) ? $fiber : new Fiber($fiber);
4563
}
4664

4765
public function run()

0 commit comments

Comments
 (0)