Tour de WebAssembly Table des Matières

Retourner une référence

Nous rencontrons cependant un problème avec les fonctions dynamiques lorsque nous voulons retourner une référence à un objet. En effet, WebAssembly et JavaScript ne peuvent échanger entre eux uniquement des nombres! Afin de surmonter ce problème, il nous suffit d'établir une convention pour pouvoir référencer nos objets JavaScript en stockant ces objets dans le contexte.

let query_selector_handle = register_function("
  (context, selectorStart, selectorEnd) => {
    let selector = context.getUtf8FromMemory(
      selectorStart,selectorEnd);
    let domEl = document.querySelector(selector);
    let objHandle = context.storeObject(domEl);
    return objHandle;
  }");

let selector = "#fancy-button";

let dom_element_handle = js_invoke_with_2_params(
    log_handle,selector.as_ptr() as f64, 
    selector.len() as f64 );
Mascot Ferris