Репро:
<?php
use GuzzleHttp\Promise\Promise;
require __DIR__ . '/vendor/autoload.php';
$promise1 = new Promise(function() use (&$promise1) {
print 'PROMISE 1 FIRED' . PHP_EOL;
sleep(2);
$promise1->resolve('foo');
});
$promise2 = new Promise(function() use (&$promise2) {
print 'PROMISE 2 FIRED' . PHP_EOL;
sleep(2);
$promise2->resolve('bar');
});
$promises = [$promise1, $promise2];
$results = \GuzzleHttp\Promise\unwrap($promises);
var_dump($results);
И свалка это:
//PROMISE 1 FIRED
//PROMISE 2 FIRED <-- fires after 2 seconds, and not immediately
//array(2) {
// [0]=>
// string(3) "foo"// [1]=>
// string(3) "bar"//}
Прямо сейчас, PROMISE 2 FIRED
печатает через 2 секунды, а не сразу.
Как я могу получить его для печати сразу?
Задача ещё не решена.
Других решений пока нет …