Metode Embedded
Metode .embedded() mengeksekusi program yang sedang dimuat di VM dan mengembalikan value yang terdefinisi, outputs eksekusi saat ini, serta status halted VM. Hasil yang tidak terdefinisi atau VM yang dihentikan memberikan null untuk value.
Menggunakan TypeScript
Untuk TypeScript, buat VM dengan Control dan Observe, muat array bytecode mentah, lalu panggil .embedded().
const raw = [
['push', 42],
['stop'],
];
const optimized = tools.optimizeBytecode(raw);
vm.load(optimized)
const result = vm.embedded();
console.log(result);2
3
4
5
6
7
8
Menggunakan Rust
Dalam Rust, Anda dapat memuat string bytecode yang diserialisasi atau nilai serde_json sebelum memanggil .embedded().
let raw = r#"[
["push", 42],
["stop"]
]"#;
let optimized = tools.optimize_bytecode(raw);
vm.load(optimized.clone())
let result = vm.embedded();
println!("value: {}", result["value"]);
println!("outputs: {}", result["outputs"]);
println!("halted: {}", result["halted"]);2
3
4
5
6
7
8
9
10
let raw = serde_json::json!([
["push", 42],
["stop"]
]);
let optimized = tools.optimize_bytecode(raw);
vm.load(optimized.clone())
let result = vm.embedded();
println!("value: {}", result["value"]);
println!("outputs: {}", result["outputs"]);
println!("halted: {}", result["halted"]);2
3
4
5
6
7
8
9
10
INFO
Kapabilitas yang Dibutuhkan: Control mengeksekusi program, dan Observe mengambil output-nya.
TIP
Sebelum setiap eksekusi embedded, .embedded() menghapus output yang ditinggalkan oleh eksekusi embedded sebelumnya. outputs yang dikembalikan berasal dari eksekusi saat ini, value berisi hasil yang terdefinisi atau null untuk hasil yang tidak terdefinisi atau VM yang dihentikan, dan halted melaporkan status penghentian VM. Kegagalan eksekusi native mengembalikan { status: "error", message }, sedangkan N-API dan WebAssembly meneruskan kegagalan melalui mekanisme kesalahan binding masing-masing.