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;
}
ArkTS代码:
// ArkTS侧调用接口
let res = await nativeModule.asyncWork(1024);
funcB();
代码如上所示,在cpp代码中调用napi_resolve_deferred函数修改promise的状态,ArkTS侧异步函数就会被唤醒继续往下执行。上面代码中c++中的funcA函数和ArkTS中funcB函数哪个会先执行呢?实际测试发现funcB先执行,funcB执行完后才会执行funcA,这是为什么,funcA和funcB应该都是在ArkTS主线程执行的,ArkTS不是单线程模型吗?
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
怎么执行调用方传入的Promise或AsyncCallback回调
813浏览 • 1回复 待解决
EntryFormAbility的生命周期的回调函数在哪个文件中调用
444浏览 • 1回复 待解决
卡片生命周期回调函数在哪个文件中调用
1809浏览 • 1回复 待解决
服务卡片生命周期回调函数在哪个ArkTS文件中调用
1972浏览 • 1回复 待解决
服务卡片EntryFormAbility生命周期回调函数在哪个ArkTS文件中调用
2002浏览 • 1回复 待解决
NAPI执行上层回调时,如何获取env
2318浏览 • 1回复 待解决
taskpool 执行的 async 函数和普通返回 promise 函数的一些差异问题
2125浏览 • 1回复 待解决
Ability的生命周期回调函数有哪些呢?
5735浏览 • 1回复 待解决
如何在NAPI执行上层回调时获取env
370浏览 • 1回复 待解决
taskpool任务执行结束后如何执行回调方法
2149浏览 • 1回复 待解决
HarmonyOS ArkTS开发中,异步回调,怎么切到主线程执行呢
768浏览 • 1回复 待解决
HarmonyOS 有回调函数的全局自定义弹窗代码例子
123浏览 • 1回复 待解决
HarmonyOS native层C++子线程中回调函数中调用ArkTS层中定义的类的public成员函数
104浏览 • 1回复 待解决
HarmonyOS 自定义组件生命周期回调有没有build执行后的回调
337浏览 • 1回复 待解决
HarmonyOS CustomDialog 中cancel回调没有执行
507浏览 • 1回复 待解决
HarmonyOS有没有回调函数能够在组件重绘的时候调用?
379浏览 • 1回复 待解决
官方文档中JS FA调用Java PA的机制的示例中FeatureAbility.subscribeAbilityEvent回调函数没有被调用?
10210浏览 • 1回复 待解决
HarmonyOS SegmentButton 点击事件回调是哪个? onclick无回调
98浏览 • 1回复 待解决
如何在ArkTS代码中执行HTML内的JS函数
2381浏览 • 1回复 待解决
HarmonyOS 中OH_AudioRenderer 释放时,和写数据的回调函数怎样处理同步
319浏览 • 1回复 待解决
HarmonyOS toggle点击后,状态变化的回调会跟随开关值变化
780浏览 • 1回复 待解决
HarmonyOS Native C函数中有多线程交互,用napi调用会闪退
24浏览 • 1回复 待解决
@Watch装饰器的回调执行顺序
322浏览 • 1回复 待解决
web前端页面调用应用侧函数后, promptAction.showDialog弹窗,点击按钮没有回调
380浏览 • 1回复 待解决
napi_resolved会将promise状态改为resolved,放入微任务队列,退出时执行微任务队列,所以B先执行napi_resolved返回后继续执行sleep及以下逻辑。