小程序首页js文件等待app.js执行完成后才执行

news/2024/11/9 5:05:57/

小程序首页js文件等待app.js执行完成后才执行

背景

在开发小程序时,需要实现如下需求:

小程序首页js文件等待app.js执行完成后才执行,其中app.js中存在耗时操作

解决方案

1.异步加载:将耗时操作放在一个异步函数中,并在app.js中执行。在异步函数中,可以使用Promise对象来控制执行的顺序和等待时间。然后,在小程序首页的js文件中使用Promise来等待app.js中的异步函数执行完成后再继续执行。例如:

app.js中:

timeConsumingOperation() {return new Promise(resolve => {// 耗时操作setTimeout(() => {console.log('耗时操作执行完成');resolve();}, 3000); // 假设耗时操作需要3秒});
}App({onLaunch() {timeConsumingOperation().then(() => {console.log('app.js中的耗时操作执行完成');});},
});

在小程序首页的js文件中:

const app = getApp();Page({onLoad() {app.timeConsumingOperation().then(() => {console.log('首页的js文件中的代码执行');});},
});

2.使用回调函数:在app.js中定义一个回调函数,并将回调函数作为参数传递给耗时操作的函数。在耗时操作完成后,调用回调函数。然后,在小程序首页的js文件中调用耗时操作的函数,并传入一个回调函数来处理操作完成后的逻辑。例如:

app.js中:

timeConsumingOperation(callback) {// 耗时操作setTimeout(() => {console.log('耗时操作执行完成');callback();}, 3000); // 假设耗时操作需要3秒
}App({onLaunch() {timeConsumingOperation(() => {console.log('app.js中的耗时操作执行完成');});},
});

在小程序首页的js文件中:

const app = getApp();Page({onLoad() {app.timeConsumingOperation(() => {console.log('首页的js文件中的代码执行');});},
});

3.使用全局变量或状态管理工具:在app.js中设置一个全局变量或使用状态管理工具(如ReduxVuex等)来标识耗时操作的完成状态。在小程序首页的js文件中通过监听全局变量的变化或使用状态管理工具的订阅机制来执行相应的逻辑。

app.js中:

App({globalData: {operationComplete: false, // 初始状态为未完成},onLaunch() {// 耗时操作setTimeout(() => {console.log('耗时操作执行完成');this.globalData.operationComplete = true;}, 3000); // 假设耗时操作需要3秒},
});

在小程序首页的js文件中:

Page({onLoad() {const app = getApp();const checkOperationStatus = setInterval(() => {if (app.globalData.operationComplete) {clearInterval(checkOperationStatus);console.log('首页的js文件中的代码执行');}}, 100); // 每100毫秒检查一次状态变化},
});

http://www.ppmy.cn/news/336971.html

相关文章

Error listening on: (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) TNS-12545: Connect failed because tar

因为这是一台公司的服务器,自己是远程登录的,不知道谁把hostname给改掉了,导致我今天oracle启动监听时出现了这样的错误,发现是找不到host, 于是第一步使用指令 第二步将文件里面添加进去服务器地址,以及…

安卓虚拟机VMOS_1.4.0绿化版

软件描述 VMOS是一个可以在安卓设备上安装虚拟机的软件,使用VMOS的虚拟系统,你可以自由使用Xposed框架和Root权限的内容,对于现如今Root权限几乎在真机上已经绝迹了的时代来说,这是玩机党的不二选择。 lanzou.com/iZr0v01sef7g

JS逆向吐环境

这里调用时机是webpack加载器加载完成后的吐出 1.定位加载器 2.断下目标模块 1.加载完成后,sfu(t), 可以看到明显的加载器,手扣太费劲,直接输出吧 可以看到明显的模块函数,随便测试一个 把函数转为字符串,调用的函数环…

常用echarts示例

案例一:(双坐标,双柱图) 代码及注释: this.chartOption { legend: {itemHeight: 6, // 图例的高度itemWidth: 16, // 图例的宽度x: "center", //居右显示inactiveColor: "rgba(0,0,0,0.3)", // 图…

关于远程访问mysql出现Access denied for user 'root'@'的解决方法

原因: 这是因为虽然用户名和密码正确,但是却没有在其他ip地址上访问的权限。需要登录mysql然后修改权限。 解决方法: 具体操作是首先本地登陆MySQL,然后执行这两句代码:GRANT ALL PRIVILEGES ON . TO root‘%’ IDE…

centos7 mysql启动报错问题

执行命令:service mysqld start 报错: Starting MySQL.Logging to ‘/usr/local/mysql/data/localhost.localdomain.err’. . ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid). 解决方式一&…

echarts实现山东地图可放大缩小可下钻

最近遇到一个新需求,要求展示山东省的地图,并且点击可进入地级市地图。这可是难倒了我,我尝试着用不同的方法,高德地图、百度地图等,发现都有一定的缺陷,最终决定使用echarts实现,下面就来跟大家…

html结构及部分属性——从0开始

<!--html负责网页的结构&#xff0c;使用html标签时&#xff0c;应关注标签的语义而不是样式--><!doctype html> <!--声明网页版本是html5--> <html><head><title>html的网页</title> <!--title的内容会会作为搜索结果的超链接上…