Synchronous vs. asincrono per la pubblicazione sottoscrive le comunicazioni tra oggetti JavaScript

2

Ho implementato il modello di sottoscrizione di pubblicazione in un modulo JavaScript che deve essere utilizzato da oggetti JavaScript interamente orientati sul lato client. Questo modulo non ha nulla a che fare con le comunicazioni client-server in alcun modo, forma o forma.

La mia domanda è se sia meglio che il metodo di pubblicazione in tale modulo sia sincrono o asincrono e perché.

Come esempio molto semplificato diciamo che sto costruendo un'interfaccia utente personalizzata per un widget di video player HTML5:

Uno dei miei moduli è il modulo "video" che contiene l'elemento VIDEO e gestisce le varie funzionalità ed eventi associati a quell'elemento. Questo probabilmente avrebbe uno spazio dei nomi qualcosa come "widgets.player.video."

Un altro è il modulo "controls" che ha i vari pulsanti: play, pause, volume, scrub, fullscreen, ecc. Questo potrebbe avere uno spazio dei nomi sulla falsariga di "widgets.player.controls."

Questi due moduli sono figli di un modulo "giocatore" genitore ("widgets.player" ??), e come tali non avrebbero alcuna conoscenza inerente l'uno all'altro quando sono istanziati come figli dell'oggetto "giocatore".

Gli elementi "controlli" dovrebbero ovviamente essere in grado di apportare alcune modifiche al video (fare clic su "Riproduci" e il video dovrebbe essere riprodotto), e viceversa (l'evento "timeUpdate" del video si attiva e la visualizzazione della corrente il tempo nei controlli dovrebbe essere aggiornato).

Potrei accoppiare strettamente questi moduli e passare i riferimenti l'uno all'altro, ma preferirei adottare un approccio più liberamente accoppiato impostando un modulo di tipo pubsub che sia possibile sottoscrivere e pubblicare da.

SO (grazie per aver portato con me) in questo tipo di scenario c'è un vantaggio in un modo o nell'altro per la pubblicazione sincrona rispetto alla pubblicazione asincrona? Ho visto alcune soluzioni pubblicate online che consentono o con un flag booleano, mentre altre lo fanno automaticamente in modo asincrono. Non ho visto personalmente un'implementazione che si accompagna automaticamente alla pubblicazione sincrona ... è perché non ci sono vantaggi?

So che posso farlo con le funzionalità fornite da jQuery, ma sembra che ci possano essere troppe spese generali qui. Il pattern di sottoscrizione di pubblicazione può essere implementato con un codice relativamente leggero progettato specificamente per questo particolare scopo, quindi preferirei utilizzare un sistema di event-out più generale come jQuery (che userò per esigenze di eventi più generiche: -).

    
posta natlee75 13.04.2012 - 18:26
fonte

1 risposta

1

Cerco sempre di utilizzare Async solo per il fatto che impedisce all'interfaccia utente di bloccarsi e consente di continuare a eseguire "altre" cose nella pagina. Puoi sempre mostrare qualche tipo di spinner da qualche parte in modo che l'utente sia consapevole che l'elemento è in attesa che qualcosa ritorni.

Se segui la sincronizzazione, il sistema si blocca solo fino a quando la richiesta non viene restituita. Normalmente questa è una brutta cosa.

    
risposta data 13.04.2012 - 19:09
fonte

Leggi altre domande sui tag