HarmonyOS 鸿蒙Next 冷启动App,taskPool的isCanceled和sendData在箭头函数中调用失败,之后才能成功
HarmonyOS 鸿蒙Next 冷启动App,taskPool的isCanceled和sendData在箭头函数中调用失败,之后才能成功
日志:
[(task.cpp:340)(IsCanceled)] taskpool:: call isCanceled not in Concurrent function
[(task.cpp:418)(SendData)] taskpool:: SendData is not called in the concurrent function
[(task.cpp:340)(IsCanceled)] taskpool:: call isCanceled not in Concurrent function
[(task.cpp:418)(SendData)] taskpool:: SendData is not called in the concurrent function
[(task.cpp:340)(IsCanceled)] taskpool:: call isCanceled not in Concurrent function
[(task.cpp:418)(SendData)] taskpool:: SendData is not called in the concurrent function
[(task.cpp:340)(IsCanceled)] taskpool:: call isCanceled not in Concurrent function
[(task.cpp:418)(SendData)] taskpool:: SendData is not called in the concurrent function
[(task.cpp:340)(IsCanceled)] taskpool:: call isCanceled not in Concurrent function
[(task.cpp:418)(SendData)] taskpool:: SendData is not called in the concurrent function
[(task.cpp:340)(IsCanceled)] taskpool:: call isCanceled not in Concurrent function
[(task.cpp:418)(SendData)] taskpool:: SendData is not called in the concurrent function
代码:
@Concurrent
async function invokeSearchFun(
context: common.ApplicationContext,
account: string,
searchDataSource: number[],
searchWord: string): Promise<void> {
let callback = (resolve: Map<string, GlobalSearchData<Object>>) => {
let searchResult = resolve.get(searchWord)
if (searchResult) {
if (!taskpool.Task.isCanceled()) {
taskpool.Task.sendData(searchResult);
}
}
}
if (searchDataSource.indexOf(SearchTabType.Contacts) != -1) {
//查询联系人
searchViewModel.queryContactUserByAllTab(searchWord).then(callback)
}
if (searchDataSource.indexOf(SearchTabType.Group) != -1) {
//查询群组
searchViewModel.getGroupDataByAllTab(searchWord).then(callback)
}
}
更多关于HarmonyOS 鸿蒙Next 冷启动App,taskPool的isCanceled和sendData在箭头函数中调用失败,之后才能成功的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
该接口在taskpool的线程中调用。
避免在回调函数中使用该方法。
调用该接口时确保处理数据的回调函数在宿主线程已注册。
参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-taskpool-V5#senddata11
更多关于HarmonyOS 鸿蒙Next 冷启动App,taskPool的isCanceled和sendData在箭头函数中调用失败,之后才能成功的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next系统中,冷启动App时遇到taskPool
的isCanceled
和sendData
在箭头函数中调用失败的问题,通常与任务执行的生命周期和上下文环境有关。在鸿蒙系统的异步任务管理中,taskPool
的任务执行是在特定的线程池中进行的,而箭头函数可能不会正确绑定执行时的上下文(this
指向)。
确保isCanceled
和sendData
方法调用时,this
指向正确的实例是关键。如果这些方法依赖于特定的类实例,使用传统函数而非箭头函数定义回调可能更为合适,因为传统函数不会自动绑定this
,而是根据调用时的上下文决定。
此外,检查任务是否在任务被取消或数据发送之前就已经完成或异常终止也是必要的。鸿蒙系统的任务调度机制可能会因任务状态变化而导致方法调用失败。
可以尝试以下步骤:
- 确认
taskPool
任务中使用的函数类型,确保this
指向正确。 - 检查任务状态,确保在调用
isCanceled
和sendData
之前任务处于有效状态。 - 使用日志或调试工具跟踪任务执行流程,定位问题发生的具体环节。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html