Bonjour,
pour mon appli j'ai �crit une lib compos�e d'un ensemble de classes ES6 g�rant des donn�es (c'est le "mod�le" de mon appli), avec de l'h�ritage, des propri�t�s, des m�thodes, des getters/setters et ces m�thodes/propri�t�s/getters peuvent parfois renvoyer un autre objet lui-m�me instance d'une classe de la lib.
Jusqu'ici, tout va bien ...
Maintenant, certaines fonctionnalit�s-cl�s de mon appli peuvent executer des calculs qui sont d�j� impl�ment�s et marchent bien, mais qui sont un peu co�teux. Et comme ceux-ci ne font pas appel au DOM et ne modifient pas les donn�es-source, je voudrais les "parall�liser" dans un WebWorker de fa�on a all�ger le thread principal de ma page.
Et l� �a se complique : lors du postMessage au worker, j'ai une erreur :
Si j'ai bien compris, c'est parce que JS n'arrive pas � cloner mes objets avec L'algorithme de clonage structur�.Failed to execute 'postMessage' on 'Worker': URL object could not be cloned
J'ai essay� de serialiser mon objet avec un JSON.stringify(), mais l� j'ai une autre erreur � cause de r�f�rences cycliques.
Or, dans le worker, j'ai vraiment besoin des m�thodes de mes classes, donc je ne peux pas "r�duire" mes objets � des types JS natifs : sans le code de mes classes, le worker n'aurait plus aucun int�r�t.
D'o� ma question :
=> Existe-t-il un moyen de personnaliser (de fa�on "int�gr�e" proprement au language) la fa�on dont les instances de mes classes sont clon�es (par exemple en codant quelles propri�t�s sont clon�es ou pas et comment ?).
=> A d�faut, m�me question pour leur serialisation avec JSON.parse()
=> Si non, connaissez-vous des contournements qui me permettraient de passer au worker les donn�es ET l'implem des traitements (= les m�thodes de mes classes) ?
Merci d'avance![]()
Partager