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
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
- Si
indexest supérieur ou égal àTable.prototype.length, une exceptionRangeErrorest levée. - Si
valuen'est pas du type d'élément du tableau, une exceptionTypeErrorest levée.
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).
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 :
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.)) :
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> |