1. NAPI_EXTERN napi_status
    2. napi_create_threadsafe_function(napi_env env,
    3. napi_value func,
    4. napi_value async_resource,
    5. napi_value async_resource_name,
    6. size_t max_queue_size,
    7. size_t initial_thread_count,
    8. void* thread_finalize_data,
    9. napi_finalize thread_finalize_cb,
    10. void* context,
    11. napi_threadsafe_function_call_js call_js_cb,
    12. napi_threadsafe_function* result);
    • [in] env: The environment that the API is invoked under.
    • [in] func: An optional JavaScript function to call from another thread. It must be provided if NULL is passed to call_js_cb.
    • [in] async_resource: An optional object associated with the async work that will be passed to possible async_hooks [init hooks][].
    • [in] async_resource_name: A JavaScript string to provide an identifier for the kind of resource that is being provided for diagnostic information exposed by the async_hooks API.
    • [in] max_queue_size: Maximum size of the queue. 0 for no limit.
    • [in] initial_thread_count: The initial number of acquisitions, i.e. the initial number of threads, including the main thread, which will be making use of this function.
    • [in] thread_finalize_data: Optional data to be passed to thread_finalize_cb.
    • [in] thread_finalize_cb: Optional function to call when the napi_threadsafe_function is being destroyed.
    • [in] context: Optional data to attach to the resulting napi_threadsafe_function.
    • [in] call_js_cb: Optional callback which calls the JavaScript function in response to a call on a different thread. This callback will be called on the main thread. If not given, the JavaScript function will be called with no parameters and with undefined as its this value. [napi_threadsafe_function_call_js][] provides more details.
    • [out] result: The asynchronous thread-safe JavaScript function.