$msg_sent = false;
foreach ($channels as $channel) {
$resolve = function() use ( &$msg_sent )
{
$msg_sent = true;
};
$reject = function( \Exception $e )
{
error_log( $e, 3, './error.txt' . PHP_EOL );
};
$channel->send('hlw')->done( $resolve, $reject );
if ( $msg_sent ){
break;
} else {
continue;
}
}
Как вы можете видеть выше,
$ msg_sent - false,
$ channel - это массив с 3 экземплярами одинаковых объектов (с разными значениями)
, и когда я нажимаю send (),он возвращает ExtendedPromiseInterface, в котором $ resolved выполняется при отправке сообщения и $ reject, когда не отправляется.
Итак, я хочу проверить, отправлено сообщение или нет, если нет, то продолжите цикли попробуйте отправить сообщение на другой канал, если оно отправлено, затем прервите цикл.
Но неожиданно оно всегда возвращает false, и цикл запускается, даже если сообщение отправлено.