use jsbind::prelude::*;
fn main() {
emlite::init();
let value = Any::from(42);
let promise = Promise::<Any>::resolve(&value);
println!("Created resolved Promise: {:?}", promise);
let reason = Any::from("error");
let rejected = Promise::<Any>::reject(&reason);
println!("Created rejected Promise: {:?}", rejected);
let arr: TypedArray<Any> = TypedArray::from(vec![
Promise::<Any>::resolve(&Any::from(1)).into(),
Promise::<Any>::resolve(&Any::from(2)).into(),
]);
let all = Promise::<Any>::all(&arr);
println!("Promise.all result: {:?}", all);
let on_fulfilled = Function::new(
&["value"],
"console.log('Promise fulfilled with:', value); return 'ok';",
)
.unwrap();
let on_rejected = Function::new(
&["reason"],
"console.log('Promise rejected with:', reason); return 'fail';",
)
.unwrap();
let chained = promise.then(&on_fulfilled, &on_rejected);
let caught = chained.catch(&on_rejected);
let finalized = caught.finally(&on_fulfilled);
println!("Chained Promise: {:?}", finalized);
Console::get().log(&[finalized.into()]);
}