循环里面怎么加阻塞,类似thread.sleep(),settimeOut是不行的

循环里面怎么加阻塞,类似thread.sleep(),settimeOut是不行的

HarmonyOS
2024-05-10 22:30:20
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
PatrickGamp

简单一点时间要求不严格,可以使用下面方式:

function blockMainThread() { 
  console.log(‘Start blocking’); 
  const start = Date.now(); 
  while (Date.now() - start < 1000) { 
    // 空循环,等待 1 秒 
  } 
  console.log(‘End blocking’); 
} 
 
blockMainThread();

如果时间要求严格,可以使用c语言的方式:在ArkTS层要到达C/C层的sleep效果,思路如下:1.ArkTS层的while循环中调用与Native C层的接口,在C层通过sleep来完成该功能。

2.具体实现如下:

1)Arkts层的函数中,的代码如下: 
function CppSleep(): void { 
  let loop = 0; 
  while (loop < 2) { 
    loop; 
    hilog.info(0x0000, ‘testTag’, ‘loop3:%{public}d’, loop); 
    add(1, 2); 
    hilog.info(0x0000, ‘testTag’, ‘loop3 finish’); 
  } 
  hilog.info(0x0000, ‘testTag’, ‘end CppSleep’); 
} 
hilog.info(0x0000, ‘testTag’, ‘handle 5’); 
CppSleep(); 
2.创建的Native c模板中,在Native C的Add函数中,增加sleep处理,代码片段如下: 
#include <unistd.h> 
… 
static napi_value Add(napi_env env, napi_callback_info info) 
{ 
  … 
  sleep(2); 
  … 
} 
…
分享
微博
QQ
微信
回复
2024-05-11 11:28:03
相关问题
怎么给通知单击事件?
3718浏览 • 1回复 待解决
HarmonyOS有没类似Android里面的Fragment
12776浏览 • 4回复 待解决
是否允许HAR循环依赖
877浏览 • 1回复 待解决
ArkTs解决循环引用方式
722浏览 • 1回复 待解决
循环显示包含图片子组件
498浏览 • 1回复 待解决
openharmony napi 异步耗时阻塞jsui刷新
4221浏览 • 1回复 已解决
list 支持循环滚动吗?
933浏览 • 1回复 待解决
有人知道怎么在markdown里面写目录吗
1411浏览 • 1回复 已解决
ivanti CSA 怎么工作
2397浏览 • 0回复 待解决