簡體   English   中英

NODE N-API在使用插件中的功能時會阻塞主流程節點js?

[英]NODE N-API When using functions from addon blocks the main process node js?

使用N-API實現了該函數的包裝器。 它可以工作,但是問題是,當它工作時,節點的主線程不起作用? 我該如何重寫此函數,以便它不會阻塞主線程? 我需要為此使用異步,回調,線程嗎?

napi_value readDataSerial(napi_env env, napi_callback_info info) {
        napi_status status;
        size_t argc = 1;    
        napi_value args[1], object;  
        napi_value id, data;
        status = napi_get_cb_info(env, info, &argc, args, NULL, NULL);
        assert(status == napi_ok);
        if (argc < 1) {
          napi_throw_type_error(env, NULL, "Wrong number of arguments");
          return NULL;
        }    
        //....
        Ibox_ReadData *context = calloc(1, sizeof(Ibox_Context));
        //this function takes a long time and blocks the main process
        Ibox_Result_Submit *submitResult = Ibox_Controller_ReadData(context);
        status = napi_create_object(env, &object);
        status = napi_create_string_utf8(env, submitResult->id, NAPI_AUTO_LENGTH, &id);
        status = napi_set_named_property(env, object, "id", id);         
        status = napi_create_string_utf8(env, submitResult->date, NAPI_AUTO_LENGTH, &date);
        status = napi_set_named_property(env, object, "data", data);         
        assert(status == napi_ok);
        return object;
    })  

這並非易事,但此示例顯示了如何創建異步工作線程並返回結果而不會阻塞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM