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

embedded/2025/3/21 2:09:26/

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.ppmy.cn/embedded/174305.html

相关文章

标准 Git Commit 模板格式指南

✅ 标准 Git Commit 模板格式指南 格式模板 <type>(<scope>): <subject><body> ← 可选&#xff0c;详细说明做了什么&#xff0c;为啥这么做&#x1f4cc; 常见的 <type> 类型说明 类型说明feat新增功能&#xff08;feature&#xff09;fix…

软考程序员考试知识点汇总

软考程序员考试&#xff08;初级资格&#xff09;主要考察计算机基础理论、编程能力及软件开发相关知识。以下是核心知识点总结及备考建议&#xff1a; 一、计算机基础 数制与编码 二进制、八进制、十进制、十六进制转换原码、反码、补码表示&#xff08;整数与浮点数&#xf…

设计模式(行为型)-备忘录模式

目录 定义 类图 角色 角色详解 &#xff08;一&#xff09;发起人角色&#xff08;Originator&#xff09;​ &#xff08;二&#xff09;备忘录角色&#xff08;Memento&#xff09;​ &#xff08;三&#xff09;备忘录管理员角色&#xff08;Caretaker&#xff09;​…

c++图论(四)之有向无环图特的拓扑排序

在 C 中实现有向无环图&#xff08;DAG&#xff0c;Directed Acyclic Graph&#xff09;的拓扑排序&#xff0c;可以通过两种经典方法&#xff1a;BFS遍历法和 DFS 后序遍历。以下是两种方法的实现原理、代码示例及详细说明&#xff1a; 一、拓扑排序的概念 拓扑排序&#xff…

软件测试之测试覆盖率

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 我们将讨论测试覆盖率的相关问题&#xff0c;以及它如何帮助提高软件质量的。 测试覆盖率概述 测试覆盖率被定义为一种测试技术指标&#xff0c;它表明我们的…

从一则笑话看需求分析:Bug定位与修复的实战经验及大型项目测试策略设计

引言阅读原文 某日&#xff0c;老师在课堂上想考考学生们的智商&#xff0c;就问一个男孩&#xff1a;“树上有十只鸟&#xff0c;开枪打死一只&#xff0c;还剩几只&#xff1f;” 男孩反问&#xff1a;“是无声枪么&#xff1f;” “不是。” “枪声有多大&#xff1f;” “…

如何利用Spring Boot和Spring Cache实现高效的缓存管理?

在现代应用开发中&#xff0c;性能优化是一个重要的话题。尤其是在微服务架构中&#xff0c;各个服务之间的交互频繁&#xff0c;如何高效地管理和存取数据成为了一个关键问题。Spring Boot作为一个流行的开发框架&#xff0c;提供了很多便利的功能&#xff0c;其中一个就是Spr…

UMA架构下的GPU 显存

GPU 显存 (Graphics Memory) 在大多数现代设备&#xff08;包括 Android 手机、嵌入式设备等&#xff09;上&#xff0c;确实是使用 DDR&#xff08;Double Data Rate SDRAM&#xff09; 类型的内存。 不过&#xff0c;具体实现方式根据硬件架构有所不同&#xff0c;主要分为以…