Uso il backbone su un mio progetto, integrato con la comunicazione con un'API esterna. Voglio utilizzare l'aggiornamento in tempo reale dei record. Dato che non ho accesso al backend principale di questa applicazione esterna e non forniscono né websocket server né endpoint a lungo polling, in pratica mi rimane l'opzione di fare polling regolare con setInterval e un periodo di 50 secondi . Ha funzionato abbastanza bene. Il mio problema è il caso limite. Se per qualche motivo la richiesta API si blocca, per più di 50 secondi, diciamo, avvierò immediatamente una nuova richiesta. Ciò significa che ora 2 richieste sospese, che alla fine si aggiungeranno. C'è un modo per impostare un timeout per la richiesta? So che tutte le richieste portano a Backbone.sync, ma stavo controllando il codice sorgente e non vedo alcun modo fattibile per impostare il timeout per XmlHttpRequest. C'è un modo per farlo in modo pulito e senza sovrascrivere il comportamento? O ci sono altre soluzioni/soluzioni alternative?Backbone.js: definisce il timeout per l'implementazione Backbone.sync
risposta
Basta passare un'opzione timeout:milliseconds
nell'argomento options
a fetch
. Le opzioni vengono passati direttamente al jQuery.ajax, che gestisce il basso livello delle chiamate XHR:
collection.fetch({timeout:50000});
In alternativa è possibile impostare un timeout globale per tutte le richieste effettuate dall'applicazione chiamando jQuery.ajaxSetup in avvio dell'applicazione:
$.ajaxSetup({timeout:50000});
Vedo, quindi ci sono altre opzioni che possono essere passate al metodo di sincronizzazione che non sono documentate. btw posso anche passare qualcosa come {complete: functioname}? Nel caso in cui voglio implementare sondaggi lunghi. – ChuckE
È possibile passare qualsiasi opzione desiderata, non esiste alcuna convalida. Backbone ne usa alcuni, ne aggiunge altri e poi lo passa a jQuery.ajax, che è anche documentato. Se lo desideri puoi impostare il gestore completo. – jevakallio
- 1. Backbone.sync per modello
- 2. estendere Backbone.sync alla sincronizzazione batch?
- 3. Esistono esercitazioni di Backbone.js che insegnano ".sync" con il server?
- 4. Visual Studio Intellisense per Backbone.js
- 5. Il preprocessore di dump GCC definisce
- 6. Come impostare il timeout per un TcpClient?
- 7. Come specificare il timeout per XmlReader?
- 8. Come impostare il timeout per dataWithContentsOfURL: url
- 9. Come implementare il timeout per getline()?
- 10. definisce un sinonimo per una macro Clojure
- 11. Backbone.js Sync non determina alcun evento sul modello
- 12. Implementare il timeout C#
- 13. Timeout per thread.join()
- 14. Timeout Docker per container?
- 15. Timeout per WaitGroup.Wait()
- 16. Backbone.js Utilities
- 17. Timeout per AFNetworking
- 18. Timeout individuali per concurrent.futures
- 19. Impostare timeout per un'operazione
- 20. Imposta timeout per webClient.DownloadFile()
- 21. Timeout per BackgroundWorker
- 22. backbone.js https
- 23. Salvataggio dei dati del modello Backbone.js. Dati non inviati correttamente
- 24. Quando GCC definisce NDEBUG?
- 25. Definisce in azione script
- 26. Oracle Query - Missing Definisce
- 27. Backbone.js modello di cancellare il fallimento
- 28. Backbone.js: dove inserisco il mio setup jQuery?
- 29. Cosa definisce operator()()?
- 30. definisce all'interno enum
"So che tutte le richieste portano a Backbone.sync" - Penso che il fatto più importante qui è che tutti gli eventi portano a '$ .ajax()'! Risolve molte domande riguardanti le richieste backbone 'fetch()' e 'sync()'. –