Skip to content

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().

ts
const raw = [
  ['push', 42],
  ['stop'],
];
const optimized = tools.optimizeBytecode(raw);
vm.load(optimized)
const result = vm.embedded();
console.log(result);

Menggunakan Rust

Dalam Rust, Anda dapat memuat string bytecode yang diserialisasi atau nilai serde_json sebelum memanggil .embedded().

rust
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"]);
rust
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"]);

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.