I have an Event with a bunch of queued listeners. Can't run sync
because I am calling external APIs etc
Events\Invoice\InvoiceEvent::class => [
Listeners\Invoice\Listener1::class,
Listeners\Invoice\Listener2::class,
Listeners\Invoice\Listener3::class, // calling external APIs
Listeners\Invoice\Listener4::class,
Listeners\Invoice\Listener5::class,
],
Calling this event from a controller method.
public function store(Request $request)
{
$invoice = Invoice::findOrFail($request->id);
InvoiceEvent::dispatch($invoice); // Async event, it cannot be sync
return $invoice; // need to return only when Listener3 finish execution
}
return $invoice
is dependent on Listener3, otherwise, it will return incomplete data.
How can I return only when Listener3 is finished executing?
I came up with sleep(10);
but it's not an ideal solution.
Listener3
saves data from third-party API to the invoices table which needs to be returned, that's why cannot return incomplete invoice data, right now the required data gets added to the invoice but after its return
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire