Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

WebAssembly.Table.prototype.set()

Baseline Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis octobre 2017.

La méthode set() de l'objet WebAssembly.Table permet de modifier une référence stockée à un index donné par une valeur différente.

Syntaxe

js
set(index, value)

Paramètres

index

L'index de la référence de la fonction qu'on souhaite modifier.

value

La valeur par laquelle on souhaite remplacer la référence. Cette valeur doit être une valeur du type d'élément du tableau. Selon le type, il peut s'agir d'une fonction WebAssembly exportée, d'une enveloppe JavaScript pour une fonction Wasm sous-jacente, ou d'une référence hôte.

Valeur de retour

Aucune (undefined).

Exceptions

Exemples

Utiliser la méthode set()

L'exemple suivant (voir « table2.html » code source (angl.) et version en direct (angl.)) crée une nouvelle instance de tableau WebAssembly avec une taille initiale de deux références. Nous affichons ensuite la longueur du tableau et le contenu des deux index (ces valeurs sont obtenues à l'aide de Table.prototype.get()) pour montrer que la longueur est de deux, et que les index ne contiennent actuellement aucune référence de fonction (ils retournent actuellement null).

js
const tbl = new WebAssembly.Table({ initial: 2, element: "anyfunc" });
console.log(tbl.length);
console.log(tbl.get(0));
console.log(tbl.get(1));

Nous créons ensuite un objet d'importation qui contient une référence au tableau :

js
const importObj = {
  js: { tbl },
};

Enfin, nous chargeons et instancions un module Wasm (table2.wasm) en utilisant WebAssembly.instantiateStreaming(), affichons la longueur du tableau, et invoquons les deux fonctions référencées qui sont maintenant stockées dans le tableau. Le module « table2.wasm » ajoute deux références de fonction au tableau, qui affichent chacune une valeur simple (voir représentation textuelle (angl.)) :

js
WebAssembly.instantiateStreaming(fetch("table2.wasm"), importObject).then(
  (obj) => {
    console.log(tbl.length);
    console.log(tbl.get(0)());
    console.log(tbl.get(1)());
  },
);

Notez qu'il faut inclure un second opérateur d'appel de fonction à la fin de l'accesseur pour réellement invoquer la fonction référencée et afficher la valeur stockée à l'intérieur (par exemple, get(0)() plutôt que get(0)).

Cet exemple montre que nous créons et accédons au tableau depuis JavaScript, mais que le même tableau est visible et appelable à l'intérieur de l'instance Wasm aussi.

Spécifications

Spécification
WebAssembly JavaScript Interface
# dom-table-set

Compatibilité des navigateurs

Voir aussi