diff options
| author | 8cy <[email protected]> | 2020-04-03 02:37:42 -0700 |
|---|---|---|
| committer | 8cy <[email protected]> | 2020-04-03 02:37:42 -0700 |
| commit | 60867fb030bae582082340ead7dbc7efdc2f5398 (patch) | |
| tree | 4c6a7356351be2e4914e15c4703172597c45656e /node_modules/node-addon-api/doc/async_context.md | |
| parent | commenting (diff) | |
| download | s5nical-60867fb030bae582082340ead7dbc7efdc2f5398.tar.xz s5nical-60867fb030bae582082340ead7dbc7efdc2f5398.zip | |
2020/04/03, 02:34, v1.2.0
Diffstat (limited to 'node_modules/node-addon-api/doc/async_context.md')
| -rw-r--r-- | node_modules/node-addon-api/doc/async_context.md | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/node_modules/node-addon-api/doc/async_context.md b/node_modules/node-addon-api/doc/async_context.md new file mode 100644 index 0000000..8e1f481 --- /dev/null +++ b/node_modules/node-addon-api/doc/async_context.md @@ -0,0 +1,86 @@ +# AsyncContext + +The [Napi::AsyncWorker](async_worker.md) class may not be appropriate for every +scenario. When using any other async mechanism, introducing a new class +`Napi::AsyncContext` is necessary to ensure an async operation is properly +tracked by the runtime. The `Napi::AsyncContext` class can be passed to +[Napi::Function::MakeCallback()](function.md) method to properly restore the +correct async execution context. + +## Methods + +### Constructor + +Creates a new `Napi::AsyncContext`. + +```cpp +explicit Napi::AsyncContext::AsyncContext(napi_env env, const char* resource_name); +``` + +- `[in] env`: The environment in which to create the `Napi::AsyncContext`. +- `[in] resource_name`: Null-terminated strings that represents the +identifier for the kind of resource that is being provided for diagnostic +information exposed by the `async_hooks` API. + +### Constructor + +Creates a new `Napi::AsyncContext`. + +```cpp +explicit Napi::AsyncContext::AsyncContext(napi_env env, const char* resource_name, const Napi::Object& resource); +``` + +- `[in] env`: The environment in which to create the `Napi::AsyncContext`. +- `[in] resource_name`: Null-terminated strings that represents the +identifier for the kind of resource that is being provided for diagnostic +information exposed by the `async_hooks` API. +- `[in] resource`: Object associated with the asynchronous operation that +will be passed to possible `async_hooks`. + +### Destructor + +The `Napi::AsyncContext` to be destroyed. + +```cpp +virtual Napi::AsyncContext::~AsyncContext(); +``` + +### Env + +Requests the environment in which the async context has been initially created. + +```cpp +Napi::Env Env() const; +``` + +Returns the `Napi::Env` environment in which the async context has been created. + +## Operator + +```cpp +Napi::AsyncContext::operator napi_async_context() const; +``` + +Returns the N-API `napi_async_context` wrapped by the `Napi::AsyncContext` +object. This can be used to mix usage of the C N-API and node-addon-api. + +## Example + +```cpp +#include "napi.h" + +void MakeCallbackWithAsyncContext(const Napi::CallbackInfo& info) { + Napi::Function callback = info[0].As<Napi::Function>(); + Napi::Object resource = info[1].As<Napi::Object>(); + + // Creat a new async context instance. + Napi::AsyncContext context(info.Env(), "async_context_test", resource); + + // Invoke the callback with the async context instance. + callback.MakeCallback(Napi::Object::New(info.Env()), + std::initializer_list<napi_value>{}, context); + + // The async context instance is automatically destroyed here because it's + // block-scope like `Napi::HandleScope`. +} +``` |