HarmonyOS promptAction弹窗在axios.request()的回调中无法执行

接口请求后如果成功或者报错,在接口请求的回调中,用promptAction弹窗弹出错误信息。

HarmonyOS
2024-10-29 11:24:11
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

​这里是因为箭头函数this指向的问题,您需要手动获取UIContext,示例如下:

1、创建一个全局Context,GlobalContext.etx:​

export class GlobalContext {  
  private constructor() {  
  }  
  
  private static instance: GlobalContext;  
  private _objects = new Map<string, Object>();  
  
  public static getContext(): GlobalContext {  
    if (!GlobalContext.instance) {  
      GlobalContext.instance = new GlobalContext();  
    }  
    return GlobalContext.instance;  
  }  
  
  getObject(value: string): Object | undefined {  
    return this._objects.get(value);  
  }  
  
  setObject(key: string, objectClass: Object): void {  
    this._objects.set(key, objectClass);  
  }  
}

2、在【EntryAbility.ets  -->   onWindowStageCreate】中,获取主窗口:

GlobalContext.getContext().setObject("windowStage", windowStage);

3、调用:

let windowStage = GlobalContext.getContext().getObject("windowStage") as window.WindowStage  
windowStage.getMainWindowSync().getUIContext().getPromptAction().showToast({  
   message:'请求失败'  
});

这是因为直接预览时,不会编译EntryAbility.ets这个文件,所以不会保存主页面的windowStage,在模拟器上就会编译EntryAbility.ets这个文件。

分享
微博
QQ
微信
回复
2024-10-29 16:40:41
相关问题
ForEach真机上无法执行
1887浏览 • 1回复 待解决
DevEco无法执行Previewer
560浏览 • 1回复 待解决
@Watch装饰器执行顺序
288浏览 • 1回复 待解决
NAPI执行上层时,如何获取env
2261浏览 • 1回复 待解决
焦点事件onBlur/onFocus无法触发
2000浏览 • 1回复 待解决