首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NODE N-API当使用来自addon的函数阻塞主进程节点js?

NODE N-API当使用来自addon的函数阻塞主进程节点js?
EN

Stack Overflow用户
提问于 2019-01-24 17:15:47
回答 1查看 73关注 0票数 0

使用N-API实现了函数的包装器。它可以工作,但问题是,当它工作时,节点的主线程不工作?如何重写此函数,使其不会阻塞主线程?我需要什么来使用异步,回调,线程?

代码语言:javascript
复制
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;
    })  
EN

回答 1

Stack Overflow用户

发布于 2019-02-01 12:47:18

这不是微不足道的,但是这个example展示了如何创建异步工作线程并返回结果而不阻塞。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54343033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档