怎么执行调用方传入的Promise或AsyncCallback回调

给上层业务提供的接口入参里面有个Promise回调,请问该如何调用这个回调。

怎么执行调用方传入的Promise或AsyncCallback回调 -鸿蒙开发者社区

怎么执行调用方传入的Promise或AsyncCallback回调 -鸿蒙开发者社区

HarmonyOS
2024-05-30 21:57:51
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
薯条包装盒

自定义Promise对象传入,调用参数方法即可。

示例代码:

export interface InitConfig { 
  onLoadFinish(data: ESObject) 
  StatusCallback(callBack:Promise<number>):void; 
}
import { TestViewModel } from './TestViewModel'; 
import { InitConfig } from './InitConfig' 
import { BusinessError } from '@ohos.base'; 
 
@Entry 
@Component 
struct Index { 
  @State initConfig: InnerInitConfig = new InnerInitConfig(); 
  promise: Promise<number> = new Promise((resolve: Function, reject: Function) => { 
    setTimeout(() => { 
      const randomNumber: number = Math.random(); 
      if (randomNumber > 0.5) { 
        resolve(randomNumber); 
      } else { 
        reject(new Error('Random number is too small')); 
      } 
    }, 1000); 
  }) 
 
  build() { 
    Row() { 
      Column() { 
        Text('Text') 
          .fontSize(50) 
          .fontWeight(FontWeight.Bold) 
          .onClick(() => { 
            console.info('TAG', `onClick`); 
            this.initConfig.StatusCallback(this.promise) 
 
            this.promise.then((result: number) => { 
              console.info('TAG', `Random number is ${result}`); 
            }).catch((error: BusinessError) => { 
              console.info('TAG', `catch`); 
              console.error('TAG', error.message); 
            }); 
          }) 
      } 
    } 
  } 
} 
 
class InnerInitConfig implements InitConfig { 
  StatusCallback(callBack: Promise<number>): void { 
    // throw new Error('Method not implemented.'); 
  } 
 
  onLoadFinish(data: ESObject): void { 
 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.

文档链接:

异步并发概述 (Promise和async/await)

分享
微博
QQ
微信
回复
2024-05-31 21:18:28
相关问题
@Watch装饰器执行顺序
951浏览 • 1回复 待解决
interface如何调用
1422浏览 • 1回复 待解决
HarmonyOS Promise 重复执行,不执行
865浏览 • 1回复 待解决
HarmonyOS zlib.compressFile不执行
550浏览 • 1回复 待解决
HarmonyOS Scroll方法执行改变
771浏览 • 1回复 待解决
NAPI执行上层时,如何获取env
3134浏览 • 1回复 待解决
lottile动画加载完成调用
1701浏览 • 1回复 待解决
如何在NAPI执行上层时获取env
797浏览 • 1回复 待解决
HarmonyOS promise链式调用如何使用
1040浏览 • 1回复 待解决
HarmonyOS promise调用如何进行串行调用
895浏览 • 1回复 待解决
函数怎么写比较好
2042浏览 • 1回复 待解决