相关问题
#鸿蒙通关秘籍#如何在鸿蒙开发中使用Promise模式实现异步操作?
801浏览 • 2回复 待解决
#鸿蒙通关秘籍#鸿蒙应用侧与前端页面如何进行数据通信?
315浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用Worker实现线程间异步通信?
629浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙开发中使用Promise进行文件写入操作?
477浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中使用callback方式进行异步任务开发?
618浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙应用中使用openLink接口进行跳转?
574浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在OpenHarmony中使用KCP协议进行网络通信?
544浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙应用中使用hilog进行日志输出?
766浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中使用Navigation组件进行页面跳转?
882浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在libevent中使用异步DNS解析功能
436浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何使用Promise对象来处理异步操作?
719浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在OpenHarmony中使用ProtoBuf进行数据通信和存储?
770浏览 • 1回复 待解决
鸿蒙是否进行异步通信?
4367浏览 • 1回复 待解决
#鸿蒙通关秘籍#怎样在鸿蒙环境中使用JSVM-API进行Promise操作
313浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙开发中使用GridContainer进行灵活布局?
480浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在前端页面调用应用侧的函数?
409浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中使用UDP协议进行通信,并确保应用具备必要的网络权限?
526浏览 • 0回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙应用中实现Worker的创建与消息通信?
673浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用Swiper组件实现页面切换?
535浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在dataORM中使用注解进行字段约束?
415浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中使用WebRTC进行视频会议?
686浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙应用中使用Deep Linking实现应用间跳转?
621浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何使用共享数据进行ExtensionAbility通信
665浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用Navigation组件实现页面内导航?
724浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中使用NavPathStack管理导航页面
789浏览 • 1回复 待解决
可以通过Promise模式与前端页面进行异步通信。下面展示如何在应用和页面两侧设置Promise:
应用侧创建一个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"]); } } }
前端页面调用该异步操作,并处理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>