#鸿蒙通关秘籍#如何在鸿蒙应用中使用异步Promise与前端页面进行通信?

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
星H光UDP

可以通过Promise模式与前端页面进行异步通信。下面展示如何在应用和页面两侧设置Promise:

  1. 应用侧创建一个Promise,并返回给前端页面。

    typescript // xxx.ets import { webview } from '@kit.ArkWeb';

    class AsyncClass { asyncOperation(): Promise<string> { return new Promise((resolve, reject) => { setTimeout(() => resolve("Message from application"), 3000); }); } }

    @Entry @Component struct WebComponent { webviewController: webview.WebviewController = new webview.WebviewController(); asyncObj: AsyncClass = new AsyncClass();

    build() { Column() { Web({ src: $rawfile('index.html'), controller: this.webviewController }) .registerJavaScriptProxy(this.asyncObj, "asyncObj", ["asyncOperation"]); } } }

  2. 前端页面调用该异步操作,并处理Promise的结果。

    html <!-- index.html --> <!DOCTYPE html> <html> <body> <button type="button" onclick="callAsync()">Call Async Operation</button> <p id="result"></p> <script> function callAsync() { asyncObj.asyncOperation().then((message) => { document.getElementById("result").innerText = message; }); } </script> </body> </html>

分享
微博
QQ
微信
回复
2天前
相关问题
鸿蒙是否进行异步通信
3887浏览 • 1回复 待解决
前端页面和原生页面如何进行通信
382浏览 • 1回复 待解决