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_operations.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_operations.md')
| -rw-r--r-- | node_modules/node-addon-api/doc/async_operations.md | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/node_modules/node-addon-api/doc/async_operations.md b/node_modules/node-addon-api/doc/async_operations.md new file mode 100644 index 0000000..064a9c5 --- /dev/null +++ b/node_modules/node-addon-api/doc/async_operations.md @@ -0,0 +1,31 @@ +# Asynchronous operations + +Node.js native add-ons often need to execute long running tasks and to avoid +blocking the **event loop** they have to run them asynchronously from the +**event loop**. +In the Node.js model of execution the event loop thread represents the thread +where JavaScript code is executing. The Node.js guidance is to avoid blocking +other work queued on the event loop thread. Therefore, we need to do this work on +another thread. + +All this means that native add-ons need to leverage async helpers from libuv as +part of their implementation. This allows them to schedule work to be executed +asynchronously so that their methods can return in advance of the work being +completed. + +Node Addon API provides an interface to support functions that cover +the most common asynchronous use cases. There is an abstract classes to implement +asynchronous operations: + +- **[`Napi::AsyncWorker`](async_worker.md)** + +These class helps manage asynchronous operations through an abstraction +of the concept of moving data between the **event loop** and **worker threads**. + +Also, the above class may not be appropriate for every scenario. When using any +other asynchronous mechanism, the following API is necessary to ensure an +asynchronous operation is properly tracked by the runtime: + +- **[AsyncContext](async_context.md)** + +- **[CallbackScope](callback_scope.md)** |