napi_create_threadsafe_function


NAPI_EXTERN napi_status
napi_create_threadsafe_function(napi_env env,
                                napi_value func,
                                napi_value async_resource,
                                napi_value async_resource_name,
                                size_t max_queue_size,
                                size_t initial_thread_count,
                                void* thread_finalize_data,
                                napi_finalize thread_finalize_cb,
                                void* context,
                                napi_threadsafe_function_call_js call_js_cb,
                                napi_threadsafe_function* result); 
  • [in] env:调用该 API 时所处的环境。
  • [in] func:一个可选的 JavaScript 函数,用于从另一个线程调用。如果在 call_js_cb 中传入 NULL,则必须提供该函数。
  • [in] async_resource:一个可选对象,与异步工作相关,并将传递给可能的 async_hooks init 钩子
  • [in] async_resource_name:一个 JavaScript 字符串,用于为通过 async_hooks API 提供的诊断信息所对应的资源类型提供标识符。
  • [in] max_queue_size:队列的最大大小。0 表示无限制。
  • [in] initial_thread_count:初始获取次数,即线程的初始数量,包括将使用此函数的主线程在内。
  • [in] thread_finalize_data:可选数据,将传递给 thread_finalize_cb
  • [in] thread_finalize_cb:在 napi_threadsafe_function 被销毁时可调用的可选函数。
  • [in] context:可选数据,附加到生成的 napi_threadsafe_function 上。
  • [in] call_js_cb:可选回调,用于在不同线程上的调用响应中调用 JavaScript 函数。此回调将在主线程上调用。如果未提供,将以无参数且 this 值为 undefined 的方式调用 JavaScript 函数。napi_threadsafe_function_call_js 提供了更多详细信息。
  • [out] result:异步线程安全的 JavaScript 函数。

更改历史:

  • 版本 10(NAPI_VERSION 定义为 10 或更高):

    call_js_cb 中抛出的未捕获异常将通过 'uncaughtException' 事件处理,而不是被忽略。