• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1{
2  "Napi Async Func": {
3    "prefix": "napiasyncwork",
4    "body": [
5      "struct AsyncData{",
6      "    napi_async_work work;",
7      "    napi_ref callbackRef;",
8      "    // save async work param in.",
9      "    // save async work result.",
10      "};",
11      "static void ExecuteAsyncWork(napi_env env, void* data) {",
12      "    std::this_thread::sleep_for(std::chrono::seconds(2));",
13      "    OH_LOG_Print(LOG_APP, LOG_INFO, LOG_DOMAIN, \"ASYNC\", \"ExecuteAsyncWork\");",
14      "}",
15      "static void CompleteAsyncWork(napi_env env, napi_status status, void* data) {",
16      "    // Todo: you can use \"napicallfunc\" command that execute the callback.",
17      "    OH_LOG_Print(LOG_APP, LOG_INFO, LOG_DOMAIN, \"ASYNC\", \"CompleteAsyncWork\");",
18      "}",
19      "napi_value StartAsyncWork(napi_env env, napi_callback_info info)",
20      "{",
21      "    // Create an asynchronous work object.",
22      "    napi_create_async_work(env, nullptr, resourceName, ExecuteAsyncWork, CompleteAsyncWork, asyncData, &asyncData->work);",
23      "    // Add the asynchronous work object to a queue.",
24      "    napi_queue_async_work(env, asyncData->work);",
25      "    OH_LOG_Print(LOG_APP, LOG_INFO, LOG_DOMAIN, \"ASYNC\", \"Main thread.\");",
26      "    return nullptr;",
27      "}"
28    ]
29  }
30}