更新记录
1.0.0(2025-04-30) 下载此版本
- 初始发布。
平台兼容性
uni-app x
Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
---|---|---|---|---|---|
√ | √ | 5.0 | 12 | √ | √ |
其他
多语言 | 暗黑模式 | 宽屏模式 |
---|---|---|
× | × | √ |
kux-uts-while
一个优化的 while
工具函数,提供可中断的 while
循环包装函数,支持外部和内部流程控制 (break
/continue
)。
功能特性
- 外部中断 :通过
abort()
方法从循环外部强制终止 - 内部流程控制 :循环体可通过返回值触发
break
或continue
- 同步执行 :保持原生
while
循环的原子性 - 类型安全 :完整的
uts
类型定义 - 线程安全:对安卓环境做特殊线程优化,不会卡UI线程
快速开始
基本用法
import { controllableWhile, ControlCommand } from '@/uni_modules/kux-uts-while';
let count = 0;
const { start } = controllableWhile(
() => count < 5,
(controller): ControlCommand => {
count++;
console.log(`当前计数: ${count}`);
return null;
}
)
start();
/* 输出
当前计数: 1
当前计数: 2
当前计数: 3
当前计数: 4
当前计数: 5
*/
内部流程控制 (break
/continue
)
import { controllableWhile, ControlCommand } from '@/uni_modules/kux-uts-while';
let count = 0;
const { start } = controllableWhile(
() => count < 10,
(controller): ControlCommand => {
count++;
if (count % 3 == 0) {
console.log('跳过3的倍数');
return 'continue'; // 相当于原生continue
}
if (count == 7) {
console.log("触发内部终止");
return 'break'; // 相当于原生break
}
console.log("当前值:", count);
return null;
}
)
start();
/* 输出
当前值: [number] 1
当前值: [number] 2
跳过3的倍数
当前值: [number] 4
当前值: [number] 5
跳过3的倍数
触发内部终止
*/
外部中断
const { start, abort } = controllableWhile(
() => true,
(controller): ControlCommand => {
console.log("持续运行中...", new Date().toLocaleTimeString());
return null;
}
);
start();
// 3秒后外部终止
setTimeout(() => {
abort();
console.log("循环已被外部终止");
}, 3000);
/* 输出
持续运行中... Wed Apr 30 2025
持续运行中... Wed Apr 30 2025
...(持续输出直到3秒后)
循环已被外部终止
*/
安卓线程测试
下面是普通循环和使用该函数循环启动对比,普通while代码在启动时会卡UI几秒,而下面工具函数代码会瞬间完成启动。
普通while代码
while (count < 1000000) {
count++;
if (count % 3 == 0) {
// console.log('跳过3的倍数');
continue;
}
if (count == 900000) {
// console.log("触发内部终止");
break;
}
// console.log("当前值:", count);
}
工具函数代码
const { start, abort } = controllableWhile(
() => count < 1000000,
(controller): ControlCommand => {
count++;
if (count % 3 == 0) {
// console.log('跳过3的倍数');
return 'continue';
}
if (count == 900000) {
// console.log("触发内部终止");
return 'break';
}
// console.log("当前值:", count);
return null;
}
)
start();
API
controllableWhile(condition, body)
创建可循环实例
参数:
condition: () => boolean
循环条件函数,每次迭代前调用,返回true
继续循环body: (controller: Controller) => ControlCommand
循环体函数,可以返回以下值:"break"
:立即终止循环"continue"
:跳过本次迭代null
正常执行
返回值:
start: () => void
启动循环abort: () => void
外部中断循环
类型定义
/**
* interface.uts
* uts插件接口定义文件,按规范定义接口文件可以在HBuilderX中更好的做到语法提示
*/
export type ControlCommand = 'continue' | 'break' | null;
export type ControllableWhileReturn = {
start: () => void;
abort: () => void;
execContinue: () => 'continue';
execBreak: () => 'break';
};
export type Controller = {
abort: () => void;
};
结语
kux 不生产代码,只做代码的搬运工,致力于提供uts 的 js 生态轮子实现,欢迎各位大佬在插件市场搜索使用 kux 生态插件:https://ext.dcloud.net.cn/search?q=kux
友情推荐
- TMUI4.0:包含了核心的uts插件基类.和uvue组件库
- GVIM即时通讯模版:GVIM即时通讯模版,基于uni-app x开发的一款即时通讯模版
- t-uvue-ui:T-UVUE-UI是基于UNI-APP X开发的前端UI框架
- UxFrame 低代码高性能UI框架:【F2图表、双滑块slider、炫酷效果tabbar、拖拽排序、日历拖拽选择、签名...】UniAppX 高质量UI库
- wx-ui 基于uni-app x开发的高性能混合UI库:基于uni-app x开发的高性能混合UI库,集成 uts api 和 uts component,提供了一套完整、高效且易于使用的UI组件和API,让您以更少的时间成本,轻松完成高性能应用开发。
- firstui-uvue:FirstUI(unix)组件库,一款适配 uni-app x 的轻量、简洁、高效、全面的移动端组件库。