WebAssembly.instantiate()
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2017ë 10ì.
* Some parts of this feature may have varying levels of support.
WebAssembly.instantiate() í¨ì를 ì¬ì©íë©´ WebAssembly ì½ë를 ì»´íì¼íê³ ì¸ì¤í´ì¤í í ì ììµëë¤. ì´ í¨ììë ëê°ì overloadsê° ììµëë¤.
- 기본 ì¤ë²ë¡ëë typed array ëë
ArrayBufferì ííë¡ WebAssembly ë°ì´ë리 ì½ë를 ì·¨í´ ì»´íì¼ ë° ì¸ì¤í´ì¤í를 í ë²ì ìíí©ëë¤. ë°í ë Promiseë ì»´íì¼ ëWebAssembly.Moduleë° ì²« ë²ì§¸WebAssembly.Instanceë¡ í´ìë©ëë¤. - ëë²ì§¸ ì¤ë²ë¡ëë ì´ë¯¸ ì»´íì¼ ë
WebAssembly.Moduleì ì·¨íì¬ í´ë¹ModuleìInstanceë¡ í´ìëëPromiseì ë°íí©ëë¤. ì´ overloadëModuleì´ ì´ë¯¸ ì»´íì¼ë ê²½ì° ì ì©í©ëë¤.
ê²½ê³ :
ì¤ì : ì´ ë°©ë²ì wasm 모ëì ê°ì ¸ì ì¸ì¤í´ì¤ííë ê°ì¥ í¨ì¨ì ì¸ ë°©ë²ì ìëëë¤. ê°ë¥íë¤ë©´ ìì ë°ì´í¸ ì½ëìì 모ëì 모ë í ë¨ê³ë¡ ê°ì ¸ì¤ê³ , ì»´íì¼íê³ ì¸ì¤í´ì¤ííë ëì ìµì WebAssembly.instantiateStreaming () ë©ìë를 ì¬ì©í´ì¼í©ëë¤. ArrayBuffer ë¡ì ë³íì´ íìí©ëë¤.
Syntax
>Primary overload â taking wasm binary code
Promise<ResultObject> WebAssembly.instantiate(bufferSource, importObject);
Parameters
- bufferSource
-
ì»´íì¼ í .wasm 모ëì ì´ì§ ì½ëê° ë¤ì´ìë typed array ëë
ArrayBufferì ëë¤. - importObject Optional
-
í¨ì ëë
WebAssembly.Memoryê°ì²´ì ê°ì´ ìë¡ ìì± ëì¸ì¤í´ì¤ë¡ ê°ì ¸ì¬ ê°ì í¬í¨íë ê°ì²´ì ëë¤. ì»´íì¼ ë 모ëì ê° ì ì¸ ë ê°ì ¸ ì¤ê¸°ì ëí´ íëì ì¼ì¹íë ìì±ì´ ìì´ì¼í©ëë¤. ê·¸ë ì§ ìì¼ë©´WebAssembly.LinkErrorê° ë°ìí©ëë¤.
Return value
ëê°ì íë를 í¬í¨íë ResultObject를 ê°ì§ Promise를 ë°í:
module: ì»´íì¼ ë WebAssembly 모ëì ëíë´ëWebAssembly.Moduleê°ì²´ì ëë¤. ì´ModuleìpostMessage()를 íµí´ ê³µì ëê±°ë cached in IndexedDBë¡ ë¤ì ì¸ì¤í´ì¤í ë ì ììµëë¤.instance: Exported WebAssembly functionsì í¬í¨íëWebAssembly.Instanceê°ì²´ì ëë¤.
Exceptions
- ë§¤ê° ë³ì ì¤ íëê° ì¬ë°ë¥¸ ì í ëë êµ¬ì¡°ê° ìëë©´
TypeErrorê° ë°ìí©ëë¤. - ìì
ì´ ì¤í¨íë©´ promiseë ì¤í¨ ìì¸ì ë°ë¼
WebAssembly.CompileError,WebAssembly.LinkErrorëëWebAssembly.RuntimeErrorë¡ rejectë©ëë¤.
Secondary overload â taking a module object instance
Promise<WebAssembly.Instance> WebAssembly.instantiate(module, importObject);
Parameters
- module
-
WebAssembly.Moduleê°ì²´ê° ì¸ì¤í´ì¤íë©ëë¤. - importObject Optional
-
í¨ì ëë
WebAssembly.Memoryê°ì²´ì ê°ì´ ìë¡ ìì± ë ì¸ì¤í´ì¤ë¡ ê°ì ¸ì¬ ê°ì í¬í¨íë ê°ì²´ì ëë¤. ì ì¸ ë ê°moduleê°ì ¸ ì¤ê¸°ì ëí´ ì¼ì¹íë ìì±ì´ íë ìì´ì¼í©ëë¤. ê·¸ë ì§ ìì¼ë©´WebAssembly.LinkErrorê° ë°ìí©ëë¤.
Return value
A Promise that resolves to an WebAssembly.Instance object.
Exceptions
- ë§¤ê° ë³ì ì¤ íëê° ì¬ë°ë¥¸ ì í ëë êµ¬ì¡°ê° ìëë©´
TypeErrorê° ë°ìí©ëë¤. - If the operation fails, the promise rejects with a
WebAssembly.CompileError,WebAssembly.LinkError, orWebAssembly.RuntimeError, depending on the cause of the failure. ìì ì´ ì¤í¨íë©´ promiseë ì¤í¨ ìì¸ì ë°ë¼WebAssembly.CompileError,WebAssembly.LinkErrorëëWebAssembly.RuntimeErrorë¡ rejectë©ëë¤.
Examples
Note: ëë¶ë¶ì ê²½ì° instantiate()ë³´ë¤ ë í¨ì¨ì ì´ë¯ë¡ WebAssembly.instantiateStreaming ()ì ì¬ì©íë ê²ì´ ì¢ìµëë¤.
First overload example
fetch를 ì¬ì©íì¬ ì¼ë¶ WebAssembly ë°ì´í¸ ì½ë를 ê°ì ¸ì¨ í ì°ë¦¬ë WebAssembly.instantiate () í¨ì를 ì¬ì©íì¬ ëª¨ëì ì»´íì¼íê³ ì¸ì¤í´ì¤ííì¬ í´ë¹ íë¡ì¸ì¤ìì JavaScript í¨ì를 WebAssembly 모ëë¡ ê°ì ¸ìµëë¤. ê·¸ë° ë¤ì Instanceìì Exported WebAssembly function를 í¸ì¶í©ëë¤.
var importObject = {
imports: {
imported_func: function (arg) {
console.log(arg);
},
},
};
fetch("simple.wasm")
.then((response) => response.arrayBuffer())
.then((bytes) => WebAssembly.instantiate(bytes, importObject))
.then((result) => result.instance.exports.exported_func());
ì°¸ê³ : ì´ ìì ë GitHubì index.htmlììë ì°¾ì ì ììµëë¤ (ë¼ì´ë¸ë³´ê¸°ë ìì).
Second overload example
ë¤ì ìì ë (GitHubì index-compile.html ë°ëª¨ í¹ì ë¼ì´ë¸ë¡ 보기). WebAssembly.compileStreaming () ë©ìë를 ì¬ì©íì¬ ë¡ëë simple.wasm ë°ì´í¸ ì½ë를 ì»´íì¼ í ë¤ì postMessage()를 ì¬ì©íì¬ workerìê² ì ë¬í©ëë¤.
var worker = new Worker("wasm_worker.js");
WebAssembly.compileStreaming(fetch("simple.wasm")).then((mod) =>
worker.postMessage(mod),
);
ìì
ì (wasm_worker.js 참조)ìì 모ëì´ ì¬ì©í ê°ì ¸ ì¤ê¸° ê°ì²´ë¥¼ ì ìí ë¤ì 주 ì¤ë ëìì 모ëì ìì í ì´ë²¤í¸ í¸ë¤ë¬ë¥¼ ì¤ì í©ëë¤. 모ëì ë°ì¼ë©´ WebAssembly.instantiate () ë©ìë를 ì¬ì©íì¬ ì¸ì¤í´ì¤ë¥¼ ë§ë¤ê³ ë´ë¶ìì ë´ ë³´ë¸ í¨ì를 í¸ì¶í©ëë¤.
var importObject = {
imports: {
imported_func: function (arg) {
console.log(arg);
},
},
};
onmessage = function (e) {
console.log("module received from main thread");
var mod = e.data;
WebAssembly.instantiate(mod, importObject).then(function (instance) {
instance.exports.exported_func();
});
};
ëª ì¸ì
| Specification |
|---|
| WebAssembly JavaScript Interface> # dom-webassembly-instantiate> |