Tokio
Exemplo do mundo real (opens in a new tab)
Você também pode executar Tokio
futures no Node.js. Com o recurso tokio_rt
, o napi-rs
criará um runtime do tokio para que você possa usar Env::execute_tokio_future
para executar um futuro e retornar uma Promise
JavaScript.
tokio_rt
precisa daThreadSafeFunction
por baixo dos panos, então habilitar o recursotokio_rt
ativaránapi4
por padrão.
#[js_function(1)]
pub fn readfile(ctx: CallContext) -> Result<JsObject> {
let js_filepath = ctx.get::<JsString>(0)?;
let path_str = js_filepath.into_utf8()?.into_owned()?;
ctx.env.execute_tokio_future(
tokio::fs::read(path_str).map(|v| {
v.map_err(|e| {
Error::new(
Status::GenericFailure,
format!("failed to read file, {}", e),
)
})
}),
|&mut env, data| env.create_buffer_with_data(data).map(|v| v.into_raw()),
)
}
readfile('./test.txt').then((data) => {
console.log(data) // Buffer<00 03 ...>
})