Почему мои отправленные события Livewire задерживаются до завершения функции?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Почему мои отправленные события Livewire задерживаются до завершения функции?

Сообщение Anonymous »

У меня есть компонент Livewire, который загружает видео на YouTube частями. Во время загрузки я хочу обновить индикатор выполнения на веб-интерфейсе, отправляя события Livewire для каждого загруженного фрагмента. Однако проблема в том, что все отправленные события принимаются только в конце выполнения функции, а не в реальном времени по мере загрузки. Почему это происходит и как это исправить?
Изображение

Вот упрощенный пример моей текущей реализации. Компонент (YoutubeVideoUploader.php):
class YoutubeVideoUploader extends Component
{
public function uploadVideo()
{
for($i = 0; $i < 10; $i++) {
$this->videoUploadProgress = $i;
$this->dispatch('uploadProgress', ['progress' => $i]);
Log::info("uploadProgress: " . $i . "%"); // this works well
sleep(1);
}
}
}


Шаблон лезвия (youtube-video-uploader.blade.php):





document.addEventListener('livewire:init', () => {
Livewire.on('uploadProgress', event => {
const progress = event[0]?.progress ?? 0;
// init hours, minutes, seconds..
console.log(`[${hours}:${minutes}:${seconds}] uploadProgress event:`, progress);
});
});



Подробнее здесь: https://stackoverflow.com/questions/793 ... n-finishes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»