uni-app——计时器和界面交互API

API 基本概要

概念说明
API(应用程序接口)是预先定义的方法集合,用于实现特定功能。在 uni-app 中,通过全局对象 uni 调用 API,例如 uni.getSystemInfoSync 获取设备信息。

API 分类与调用规则
  1. 事件监听型
    • on 开头,如 uni.onNetworkStatusChange 监听网络变化。
  2. 数据操作型
    • 获取数据:以 get 开头,如 uni.getStorage 读取本地缓存。
    • 设置数据:以 set 开头,如 uni.setNavigationBarTitle 修改导航栏标题。
同步与异步 API 的本质区别
  • 同步 API:执行时阻塞后续代码,需等待操作完成才能继续执行。
    • 特征:方法名以 Sync 结尾,如 uni.getSystemInfoSync
    • 适用场景:轻量级操作(如读取缓存)。
  • 异步 API:执行时不阻塞后续代码,通过回调函数或 Promise 返回结果。
    • 特征:无特殊后缀,如 uni.request 发起网络请求。
    • 适用场景:耗时操作(如网络请求、文件读写)。
Promise 化调用机制
  • Promise 核心作用:标准化异步操作管理,解决回调嵌套问题。

  • uni-app 的 Promise 化规则

    • 大部分异步 API 支持 .then() 链式调用(需注意:同步方法及特定 API 如 create*/*Manager 不支持)。
  • 代码对比示例

    // 传统回调写法  
    const task = uni.connectSocket({  success(res) { console.log(res); }  
    });  // Promise 化写法  
    uni.connectSocket().then(res => {  console.log(res); // 此处 res 与 success 回调参数一致  
    }).catch(err => {  console.error(err); // 异常捕获  
    });  
    

    优势:代码结构扁平化,逻辑更清晰,便于异常统一处理。

Promise 化注意事项
  1. 不支持的 API 类型
    • 同步方法(如 *Sync 结尾的 API)。
    • 上下文创建型(如 uni.createMapContext)。
    • 管理器类(如 uni.getBackgroundAudioManager)。
  2. 兼容性处理
    • 可通过 uni-promisify 库手动封装非 Promise 化 API。

计时器API

定时器基础操作

创建定时器

  • 单次执行setTimeout(callback, delay, ...args)

    • delay:延迟时间(毫秒单位)
    • args:可选参数,传递给回调函数
    const timerId = setTimeout(() => {  console.log('延迟2秒执行');  
    }, 2000);  
    
  • 重复执行setInterval(callback, interval, ...args)

    • interval:间隔时间(毫秒单位)
    const intervalId = setInterval(() => {  console.log('每隔1秒执行一次');  
    }, 1000);  
    

取消定时器

  • clearTimeout(timeoutID)clearInterval(intervalID)

    clearTimeout(timerId);  // 取消单次定时器  
    clearInterval(intervalId); // 取消重复定时器  
    

注意事项

  • 跨平台差异:小程序环境中定时器不会随页面销毁自动清除,需在onUnload生命周期手动清理。
  • 性能优化:避免频繁创建定时器,防止内存泄漏。

界面交互 API

1. 消息提示框

显示提示uni.showToast({ ... })

  • 关键参数

    uni.showToast({  title: '操作成功',  icon: 'success',     // 可选值:success/loading/none  duration: 2000,      // 默认1500ms  mask: true           // 是否禁止穿透点击(防误触)  
    });  
    

隐藏提示uni.hideToast()


2. 加载状态提示

显示加载uni.showLoading({ ... })

  • 典型场景:网络请求等待

    uni.showLoading({  title: '加载中...',  mask: true  
    });  // 请求完成后调用  
    uni.hideLoading();  
    

3. 模态对话框

显示模态框uni.showModal({ ... })

  • 参数与回调

    uni.showModal({  title: '确认删除',  content: '删除后无法恢复',  editable: true,       // 是否显示输入框  placeholderText: '请输入备注',  success: (res) => {  if (res.confirm) {  console.log('用户点击确定', res.content);  } else if (res.cancel) {  console.log('用户点击取消');  }  }  
    });  
    

4. 操作菜单

显示菜单uni.showActionSheet({ ... })

  • 交互逻辑

    uni.showActionSheet({  itemList: ['保存草稿', '发布文章', '取消'],  success: (res) => {  const index = res.tapIndex;  if (index === 0) console.log('保存草稿');  else if (index === 1) console.log('发布文章');  },  fail: () => console.log('菜单调用失败')  
    });  
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/72693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dify 升级攻略:从0.15.3迈向1.1.0,元数据管理全攻略!

嘿,小伙伴们!今天给大家带来一个超实用的干货分享——Dify从0.15.3升级到1.1.0版本的详细攻略。这次升级不仅带来了功能上的更新,还特别强化了元数据管理。相信很多小伙伴和我一样,一直在使用Dify来提升工作效率,但每次…

15.三数之和-力扣(python)

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 1&a…

numpy学习笔记14:模拟随机游走过程

numpy学习笔记14:模拟随机游走过程 随机游走是一种数学统计模型,其中的每一步方向和大小都是随机的。下面使用 NumPy 模拟一维和二维的随机游走过程: 1.代码示例 import numpy as np import matplotlib.pyplot as plt plt.rcParams[font.s…

YOLOv11 目标检测

本文章不再赘述anaconda的下载以及虚拟环境的配置,博主使用的python版本为3.8 1.获取YOLOv11的源工程文件 链接:GitHub - ultralytics/ultralytics: Ultralytics YOLO11 🚀 直接下载解压 2.需要自己准备的文件 文件结构如下:红…

dijkstra算法——47. 参加科学大会

卡码网:47. 参加科学大会https://kamacoder.com/problempage.php?pid=1047 题目描述 小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。 小明的起点是第一个车站,终点是最后一个车站。然而,途中的各个车站之间的道路状况、交通拥堵程度以…

Rust语言介绍和猜数字游戏的实现

文章目录 Rust语言介绍和猜数字游戏的实现cargo是什么使用Rust编写猜数字 Rust语言介绍和猜数字游戏的实现 Rust语言是一种系统编程语言,核心强调安全性、并发性以及高性能,由类似于C/C的底层控制能力,性能也非常接近,Rust有一些…

Ubuntu下Docker部署Misskey:打造你的去中心化社交平台

引言 在信息爆炸的时代,人们对于社交平台的需求日益增长,同时也更加注重数据的隐私和自由。Misskey作为一个开源的去中心化社交平台,为用户提供了一个全新的选择。本文将详细介绍如何在Ubuntu Linux环境下,利用Docker快速部署Mis…

DeepSeek Chat 自动化交互技术分析

本文将对 DeepSeek Chat 自动化交互脚本进行技术分析,包括代码结构、实现原理以及关键技术点。该脚本使用 Selenium 实现了对 DeepSeek Chat 平台的自动化登录和问答功能。 1. 代码结构概览 该脚本主要由以下几个部分组成: 环境准备与依赖导入&#x…

128. Longest Consecutive Sequence

如果n-1存在于数组中&#xff0c;则以n开头的连续序列可以忽略掉&#xff0c;因为以n-1开头的连续序列的长度肯定至少比以n开头的连续序列长1个元素。这是本题的关键。然后利用哈希表查询元素是否在数组中。 class Solution { public:int longestConsecutive(vector<int>…

《SQL编程思想》中的 MySQL 建表语句和测试数据

《SQL编程思想》中的 MySQL 建表语句 建表语句 -- 创建 4 个示例表和索引 CREATE TABLE department( dept_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 部门编号&#xff0c;自增主键, dept_name VARCHAR(50) NOT NULL COMMENT 部门名称) ENGINEInnoDB COMM…

基于ssm学科竞赛小程序的设计及实现(源码+lw+部署文档+讲解),源码可白嫖!

摘要 随着信息时代的来临&#xff0c;过去的学科竞赛管理方式的缺点逐渐暴露&#xff0c;本次对过去的学科竞赛管理方式的缺点进行分析&#xff0c;采取计算机方式构建学科竞赛小程序。本文通过阅读相关文献&#xff0c;研究国内外相关技术&#xff0c;提出了一种关于竞赛信息…

【redis】什么是持久化之 RDB

什么是持久化 MySQL 的事务&#xff0c;有四个比较核心的特性&#xff1a; 原子性一致性持久性>持久化&#xff08;说的一回事&#xff09; 把数据存储在硬盘上>持久把数据存在内存上>不持久重启进程/重启主机之后&#xff0c;数据是否还存在 隔离性 Redis 是一个内存…

Python 鼠标轨迹算法 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序&#xff0c;它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言&#xff0c;原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势&#xff1a; 模拟…

游戏立项时期随笔记录(1)

模拟经营的项目还没有完全结束&#xff0c;这几天又有可能涉及到一个新项目。感想随笔记录一下&#xff0c;防止忘记。今天一天整理这个&#xff0c;搞得今天没时间看数学和AI。 在 Unity3D 游戏前端主程序的立项时期&#xff0c;核心目标是明确技术方向、评估可行性、搭建基础…

Channel-wise Knowledge Distillation for Dense Prediction论文阅读和

paper&#xff1a;https://arxiv.org/pdf/2011.13256.pdf code&#xff1a;https://github.com/open-mmlab/mmrazor 这篇paper主要是商汤开源的mmrazor中提及在detection有效果&#xff0c;我之前记录的几篇sota文章虽然在各自的paper中在detection领域都有提及有增益&#…

hide函数的使用方法

在编程中&#xff0c;我们常常需要控制元素的显示与隐藏。特别是在前端开发中&#xff0c;hide 函数是一个非常常见的操作&#xff0c;尤其是在 JavaScript 和 jQuery 中。它可以让你轻松地将元素从视图中隐藏&#xff0c;进而提升用户交互体验和页面的响应能力。本文将介绍如何…

【MySQL】基本操作 —— DML 与约束

目录 DML 基本介绍DML 常见操作添加数据 insert给指定字段添加数据给全部字段添加数据给指定字段批量添加数据给全部字段批量添加数据 修改数据 update删除数据 delete 约束基本概念约束操作主键约束添加单列主键添加多列主键&#xff08;联合主键&#xff09;修改表结构添加主…

nginx配置转发到另一个网站或另一台服务器的服务

需求背景 在一台服务器上安装了一个服务&#xff0c;不想使用ip:port方式&#xff0c;想使用域名打开这个服务的地址。 1. 配置转发 1.1 参数解释 listen&#xff1a;指定 Nginx 监听的端口。在上面的例子中&#xff0c;Nginx 监听 8888 端口。server_name&#xff1a;用于…

HarmonyOS三层架构实战

目录&#xff1a; 1、三层架构项目结构1.0、三层架构简介1.1、 common层&#xff08;主要放一些公共的资源等&#xff09;1.2、 features层&#xff08;主要模块定义的组件以及图片等静态资源&#xff09;1.3、 products层&#xff08;主要放主页面层和一些主要的资源&#xff…

macOS homebrew - 切换源

https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/ 环境变量中 添加&#xff1a; export HOMEBREW_BREW_GIT_REMOTE"https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git" export HOMEBREW_CORE_GIT_REMOTE"https://mirrors.tuna.tsinghua.edu.cn…