taskpool 执行的 async 函数和普通返回 promise 函数的一些差异问题

当前模拟器(4.1.0.56)表现:

1. 对于一个内部实现 return 一个值的 async 函数 fun3,taskpool.execute 可以正常执行并通过返回的 promise 拿到返回值

2. 对于一个内部实现 return 一个 Promise 的 async 函数 fun4,taskpool.execute 执行失败,promise catch err: Can’t return Promise in pending state

3. 对于一个内部实现 return 一个 Promise 的 async 函数 fun5,taskpool.execute 可以正常执行并通过返回的 promise 拿到返回值

是否从 Promise 和 async 函数的规范来说,三者应该表现一致才对,尤其1 & 2,理论上语义不应该有任何区别?

HarmonyOS
2024-04-27 23:59:46
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
youganlan

1.Promise返回了一个promise对象,由于返回前有await关键字,会等待promise的resolve后返回,由于await后Promise已经resolve,此时返回值是number。async函数又会返回一个promise对象,此对象会在执行taskpool的callback函数返回结果

2.Promise返回了一个promise对象,async函数又会返回一个promise对象,返回结果变成了Promise<Promise<number>>,两层promise会导致序列化失败报错

3.Promise返回了一个promise对象,会等待promise的resolve后返回执行taskpool的callback函数返回结果

对于1 & 2差异在于多返回了一层promise对象,返回时导致序列化失败报错;callback函数会在promise对象返回resolve或者reject后返回结果

分享
微博
QQ
微信
回复
2024-04-28 21:19:28
相关问题
HarmonyOS 每秒执行函数
133浏览 • 2回复 待解决
关于鸿蒙uboot间一些问题
9195浏览 • 2回复 待解决
View引用实例化一些问题
284浏览 • 1回复 待解决
关于designWidth一些问题
301浏览 • 1回复 待解决
docker 线上使用一些问题
2445浏览 • 1回复 待解决
关于鸿蒙BLE一些问题
4313浏览 • 1回复 待解决
关于快速修复一些问题
744浏览 • 1回复 待解决
DevEco Studio 升级后一些问题
10001浏览 • 1回复 待解决
HUAWEI DevEco Device Tool一些问题
8593浏览 • 3回复 待解决
关于华为应用级AT一些问题
12012浏览 • 3回复 待解决
一些帐号授权相关问题
8660浏览 • 2回复 待解决
PromiseAsync/Await 比较
479浏览 • 1回复 待解决
关于laravel一些难受问题,连表查询
3092浏览 • 1回复 待解决
HarmonyOS Promise & taskpool使用问题
267浏览 • 1回复 待解决
JS中如何使用Promiseasync await
664浏览 • 1回复 待解决
数组map函数, 如何返回interface?
207浏览 • 1回复 待解决
HarmonyOS 使用Navigation一些疑问
311浏览 • 1回复 待解决
关于liteos-a一些问题想请教各位
8612浏览 • 2回复 待解决