相关问题
#鸿蒙通关秘籍#如何在鸿蒙开发中使用Promise模式实现异步操作?
1268浏览 • 2回复 待解决
#鸿蒙通关秘籍#鸿蒙应用侧与前端页面如何进行数据通信?
736浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用Worker实现线程间异步通信?
1081浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙开发中使用Promise进行文件写入操作?
928浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中使用callback方式进行异步任务开发?
1195浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在OpenHarmony中使用KCP协议进行网络通信?
942浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙应用中使用openLink接口进行跳转?
1077浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙应用中使用hilog进行日志输出?
1174浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中使用Navigation组件进行页面跳转?
1416浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在libevent中使用异步DNS解析功能
831浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何使用Promise对象来处理异步操作?
1133浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在OpenHarmony中使用ProtoBuf进行数据通信和存储?
1335浏览 • 1回复 待解决
#鸿蒙通关秘籍#怎样在鸿蒙环境中使用JSVM-API进行Promise操作
639浏览 • 1回复 待解决
鸿蒙是否进行异步通信?
4800浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙开发中使用GridContainer进行灵活布局?
941浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在前端页面调用应用侧的函数?
758浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中使用UDP协议进行通信,并确保应用具备必要的网络权限?
868浏览 • 0回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙应用中实现Worker的创建与消息通信?
1117浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在dataORM中使用注解进行字段约束?
803浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用Swiper组件实现页面切换?
1057浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中使用WebRTC进行视频会议?
1161浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中使用NavPathStack管理导航页面
1356浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用Navigation组件实现页面内导航?
1257浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙应用中使用Deep Linking实现应用间跳转?
1117浏览 • 1回复 待解决
#鸿蒙通关秘籍#使用async/await和Promise在鸿蒙开发中进行异步文件读写的实现步骤?
1217浏览 • 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>