Documentação
Modo de compatibilidade
Conceitos
Tokio

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 da ThreadSafeFunction por baixo dos panos, então habilitar o recurso tokio_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 ...>
})