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

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

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

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

HarmonyOS
2024-05-30 21:57:51
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
savage01

自定义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 { 
 
  } 
}

文档链接:

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

分享
微博
QQ
微信
回复
2024-05-31 21:18:28
相关问题
interface如何调用
452浏览 • 1回复 待解决
NAPI执行上层时,如何获取env
680浏览 • 1回复 待解决
lottile动画加载完成调用
467浏览 • 1回复 待解决
函数怎么写比较好
567浏览 • 1回复 待解决
鸿蒙promise怎么
6064浏览 • 3回复 待解决
AsyncCallback使用方式
621浏览 • 1回复 待解决
webview静态资源下载完成
431浏览 • 1回复 待解决
如何实现拍照预览onPreviewFrame
167浏览 • 1回复 待解决
WebView页面加载错误能力。
304浏览 • 1回复 待解决
Emitter如何声明函数类型
469浏览 • 1回复 待解决