相关问题
#鸿蒙通关秘籍#鸿蒙应用侧与前端页面如何进行数据通信?
23浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙开发中使用Promise模式实现异步操作?
118浏览 • 2回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用Worker实现线程间异步通信?
74浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙开发中使用Promise进行文件写入操作?
80浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中使用callback方式进行异步任务开发?
34浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙应用中使用openLink接口进行跳转?
68浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在OpenHarmony中使用KCP协议进行网络通信?
58浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何使用Promise对象来处理异步操作?
75浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙应用中使用hilog进行日志输出?
82浏览 • 1回复 待解决
鸿蒙是否进行异步通信?
3887浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在OpenHarmony中使用ProtoBuf进行数据通信和存储?
71浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在libevent中使用异步DNS解析功能
69浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中使用Navigation组件进行页面跳转?
206浏览 • 1回复 待解决
#鸿蒙通关秘籍#怎样在鸿蒙环境中使用JSVM-API进行Promise操作
35浏览 • 1回复 待解决
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中使用UDP协议进行通信,并确保应用具备必要的网络权限?
93浏览 • 0回复 待解决
前端页面和原生页面如何进行通信?
382浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在前端页面调用应用侧的函数?
31浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙开发中使用GridContainer进行灵活布局?
81浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙应用中实现Worker的创建与消息通信?
110浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用Swiper组件实现页面切换?
81浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中使用WebRTC进行视频会议?
73浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何使用共享数据进行ExtensionAbility通信
77浏览 • 1回复 待解决
#鸿蒙通关秘籍#使用async/await和Promise在鸿蒙开发中进行异步文件读写的实现步骤?
64浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙应用中使用Deep Linking实现应用间跳转?
91浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用Navigation组件实现页面内导航?
126浏览 • 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>