codecamp

@Concurrent装饰器:校验并发函数

在使用TaskPool时,执行的并发函数需要使用该装饰器修饰,否则无法通过相关校验。

说明

从API version 9开始,该装饰器支持在ArkTS卡片中使用。

装饰器说明

@Concurrent并发装饰器

说明

装饰器参数

无。

使用场景

仅支持在Stage模型的工程中使用。

装饰的函数类型

允许标注async函数或普通函数。禁止标注generator、箭头函数、method。不支持类成员函数或者匿名函数。

装饰的函数内的变量类型

允许使用local变量、入参和通过import引入的变量。禁止使用闭包变量。

装饰器使用示例

  1. import taskpool from '@ohos.taskpool';
  2. @Concurrent
  3. function add(num1: number, num2: number): number {
  4. return num1 + num2;
  5. }
  6. async function ConcurrentFunc(): Promise<void> {
  7. try {
  8. let task: taskpool.Task = new taskpool.Task(add, 1, 2);
  9. console.info("taskpool res is: " + await taskpool.execute(task));
  10. } catch (e) {
  11. console.error("taskpool execute error is: " + e);
  12. }
  13. }
  14. @Entry
  15. @Component
  16. struct Index {
  17. @State message: string = 'Hello World'
  18. build() {
  19. Row() {
  20. Column() {
  21. Text(this.message)
  22. .fontSize(50)
  23. .fontWeight(FontWeight.Bold)
  24. .onClick(() => {
  25. ConcurrentFunc();
  26. })
  27. }
  28. .width('100%')
  29. }
  30. .height('100%')
  31. }
  32. }
TaskPool和Worker的对比
CPU密集型任务开发指导
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录
HAR

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }