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回调
1548浏览 • 1回复 待解决
EntryFormAbility的生命周期的回调函数在哪个文件中调用
1337浏览 • 1回复 待解决
卡片生命周期回调函数在哪个文件中调用
2737浏览 • 1回复 待解决
HarmonyOS IPC异步回调函数中如何能传值给Napi的异步回调函数
1129浏览 • 1回复 待解决
服务卡片生命周期回调函数在哪个ArkTS文件中调用
2889浏览 • 1回复 待解决
服务卡片EntryFormAbility生命周期回调函数在哪个ArkTS文件中调用
2898浏览 • 1回复 待解决
NAPI执行上层回调时,如何获取env
3426浏览 • 1回复 待解决
Ability的生命周期回调函数有哪些呢?
6751浏览 • 1回复 待解决
taskpool 执行的 async 函数和普通返回 promise 函数的一些差异问题
3474浏览 • 1回复 待解决
如何在NAPI执行上层回调时获取env
980浏览 • 1回复 待解决
HarmonyOS 应用退出(用户返回退出,手动杀,系统杀)的时候,有明确会回调哪个函数吗?
1120浏览 • 1回复 待解决
taskpool任务执行结束后如何执行回调方法
3167浏览 • 1回复 待解决
HarmonyOS 有回调函数的全局自定义弹窗代码例子
1343浏览 • 1回复 待解决
HarmonyOS ArkTS开发中,异步回调,怎么切到主线程执行呢
2164浏览 • 1回复 待解决
HarmonyOS native层C++子线程中回调函数中调用ArkTS层中定义的类的public成员函数
1353浏览 • 1回复 待解决
官方文档中JS FA调用Java PA的机制的示例中FeatureAbility.subscribeAbilityEvent回调函数没有被调用?
11536浏览 • 1回复 待解决
HarmonyOS 自定义组件生命周期回调有没有build执行后的回调
1216浏览 • 1回复 待解决
HarmonyOS CustomDialog 中cancel回调没有执行
1382浏览 • 1回复 待解决
HarmonyOS有没有回调函数能够在组件重绘的时候调用?
1188浏览 • 1回复 待解决
HarmonyOS SegmentButton 点击事件回调是哪个? onclick无回调
1286浏览 • 1回复 待解决
如何在ArkTS代码中执行HTML内的JS函数
3749浏览 • 1回复 待解决
HarmonyOS 中OH_AudioRenderer 释放时,和写数据的回调函数怎样处理同步
943浏览 • 1回复 待解决
HarmonyOS toggle点击后,状态变化的回调会跟随开关值变化
2041浏览 • 1回复 待解决
@Watch装饰器的回调执行顺序
1166浏览 • 1回复 待解决
napi_resolved会将promise状态改为resolved,放入微任务队列,退出时执行微任务队列,所以B先执行napi_resolved返回后继续执行sleep及以下逻辑。