Warum werden meine gesendeten Livewire-Ereignisse verzögert, bis die Funktion beendet ist?Php

PHP-Programmierer chatten hier
Anonymous
 Warum werden meine gesendeten Livewire-Ereignisse verzögert, bis die Funktion beendet ist?

Post by Anonymous »

Ich habe eine Livewire-Komponente, die ein Video in Teilen auf YouTube hochlädt. Während des Hochladens möchte ich den Fortschrittsbalken im Frontend aktualisieren, indem ich Livewire-Ereignisse für jeden hochgeladenen Block aussende. Das Problem besteht jedoch darin, dass alle ausgelösten Ereignisse erst am Ende der Funktionsausführung empfangen werden und nicht in Echtzeit, während der Upload voranschreitet. Warum passiert das und wie kann ich es beheben?
Image

Hier ist ein vereinfachtes Beispiel meiner aktuellen Implementierung. Die Komponente (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);
}
}
}


Blade-Vorlage (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);
});
});

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post