HarmonyOS 调用napi_resolve_deferred后的代码,和promise.then中的回调函数哪个会先执行呢
参考这里的native c++代码:
napi_create_async_work(env, nullptr, resourceName, ExecuteCB, CompleteCB, callbackData, &callbackData->asyncWork);
static void CompleteCB(napi_env env, napi_status status, void *data)
{
CallbackData *callbackData = reinterpret_cast<CallbackData *>(data);
napi_value result = nullptr;
napi_create_double(env, callbackData->result, &result);
if (callbackData->result > 0) {
napi_resolve_deferred(env, callbackData->deferred, result);
} else {
napi_reject_deferred(env, callbackData->deferred, result);
}
sleep(1);
funcA();
napi_delete_async_work(env, callbackData->asyncWork);
delete callbackData;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
ArkTS代码:
// ArkTS侧调用接口
let res = await nativeModule.asyncWork(1024);
funcB();
- 1.
- 2.
- 3.
代码如上所示,在cpp代码中调用napi_resolve_deferred函数修改promise的状态,ArkTS侧异步函数就会被唤醒继续往下执行。上面代码中c++中的funcA函数和ArkTS中funcB函数哪个会先执行呢?实际测试发现funcB先执行,funcB执行完后才会执行funcA,这是为什么,funcA和funcB应该都是在ArkTS主线程执行的,ArkTS不是单线程模型吗?
HarmonyOS
赞
收藏 0
回答 1
相关问题
怎么执行调用方传入的Promise或AsyncCallback回调
1323浏览 • 1回复 待解决
EntryFormAbility的生命周期的回调函数在哪个文件中调用
1126浏览 • 1回复 待解决
卡片生命周期回调函数在哪个文件中调用
2523浏览 • 1回复 待解决
HarmonyOS IPC异步回调函数中如何能传值给Napi的异步回调函数
864浏览 • 1回复 待解决
服务卡片生命周期回调函数在哪个ArkTS文件中调用
2633浏览 • 1回复 待解决
服务卡片EntryFormAbility生命周期回调函数在哪个ArkTS文件中调用
2691浏览 • 1回复 待解决
NAPI执行上层回调时,如何获取env
3134浏览 • 1回复 待解决
Ability的生命周期回调函数有哪些呢?
6492浏览 • 1回复 待解决
taskpool 执行的 async 函数和普通返回 promise 函数的一些差异问题
3165浏览 • 1回复 待解决
如何在NAPI执行上层回调时获取env
797浏览 • 1回复 待解决
taskpool任务执行结束后如何执行回调方法
2939浏览 • 1回复 待解决
HarmonyOS ArkTS开发中,异步回调,怎么切到主线程执行呢
1867浏览 • 1回复 待解决
HarmonyOS 应用退出(用户返回退出,手动杀,系统杀)的时候,有明确会回调哪个函数吗?
924浏览 • 1回复 待解决
HarmonyOS 有回调函数的全局自定义弹窗代码例子
1036浏览 • 1回复 待解决
HarmonyOS native层C++子线程中回调函数中调用ArkTS层中定义的类的public成员函数
1069浏览 • 1回复 待解决
HarmonyOS 自定义组件生命周期回调有没有build执行后的回调
921浏览 • 1回复 待解决
HarmonyOS CustomDialog 中cancel回调没有执行
1179浏览 • 1回复 待解决
HarmonyOS有没有回调函数能够在组件重绘的时候调用?
983浏览 • 1回复 待解决
官方文档中JS FA调用Java PA的机制的示例中FeatureAbility.subscribeAbilityEvent回调函数没有被调用?
11249浏览 • 1回复 待解决
HarmonyOS SegmentButton 点击事件回调是哪个? onclick无回调
1009浏览 • 1回复 待解决
HarmonyOS toggle点击后,状态变化的回调会跟随开关值变化
1670浏览 • 1回复 待解决
HarmonyOS 中OH_AudioRenderer 释放时,和写数据的回调函数怎样处理同步
801浏览 • 1回复 待解决
如何在ArkTS代码中执行HTML内的JS函数
3348浏览 • 1回复 待解决
HarmonyOS Native C函数中有多线程交互,用napi调用会闪退
1029浏览 • 1回复 待解决
napi_resolved会将promise状态改为resolved,放入微任务队列,退出时执行微任务队列,所以B先执行napi_resolved返回后继续执行sleep及以下逻辑。