ContexteLa meilleure façon de mettre en œuvre le modèle de consommation de vote JavaScript
En mai dernier, je signalé un problème sur WebKit au sujet d'un memory retention issue. Il semble que le problème pourrait être dû à l'inspecteur Web lui-même, mais je ne suis pas encore convaincu.
Problème
Un problème refait surface dans lequel mon application JavaScript implémente un motif « Polling Consumer » pour obtenir des données qu'elle sera disponible. Le problème est que la mémoire est conservée et se développe tout au long de la journée. La logique JavaScript va comme ceci:
- Obtenir les données et me rappeler
- Quand je processus rappelai les données et puis passez à l'étape 1
Est-ce une façon raisonnable implémenter un consommateur d'interrogation en JavaScript? Incidemment, j'utilise la fonction ajax de jQuery qui, bien sûr, peut avoir ses propres problèmes. De plus, j'utilise un proxy jQuery comme gestionnaire de succès, donc j'aurais pensé que la rétention à travers la portée ne devrait pas être un problème. J'ai également observé le problème sans utiliser de proxy. Certains code:
FidsDataController.prototype.getFids = function() {
var self = this;
$.ajax({
...
success: function(data) {
// Do some processing
// Call back in a short while...
setTimeout($.proxy(self.getFids, self), 100);
},
...
});
);
Voulez-vous simplement interroger le serveur pour des données? – Aillyn
Je dois interroger le serveur en continu selon "polling consumer". L'idée est que le serveur se bloque jusqu'à ce qu'une requête soit disponible. Le client reçoit des données lorsqu'il est disponible ou expire si le serveur meurt. –