Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-uni-app-x-zh
提交
a0a5eb56
U
unidocs-uni-app-x-zh
项目概览
DCloud
/
unidocs-uni-app-x-zh
通知
144
Star
2
Fork
33
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
9
列表
看板
标记
里程碑
合并请求
11
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-uni-app-x-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
9
Issue
9
列表
看板
标记
里程碑
合并请求
11
合并请求
11
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
a0a5eb56
编写于
9月 11, 2024
作者:
lizhongyi_
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs update uts-plugin.md
上级
35bd4cc6
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
12 addition
and
3 deletion
+12
-3
docs/plugin/uts-plugin.md
docs/plugin/uts-plugin.md
+12
-3
未找到文件。
docs/plugin/uts-plugin.md
浏览文件 @
a0a5eb56
...
...
@@ -1844,10 +1844,10 @@ utsJsonObj.forEach(function(perField:any){
### HX 4.25 版本及以后 UTS 插件如何定义一个可以持续回调的函数@keepalive
H
X 4.25版本以前向 js 暴露的 callback 是一直保存在内存中的,所有带 callback 回调的函数 都可以持续回调,
但这也带来了一个致命的问题, 当频繁长时间调用带 callback 回调的函数时,由于 callback 一直保存在内存中,会创建大量 callback 对象,造成内存暴增甚至闪退。
为了处理这个问题,从 H
X 4.25 版本我们做了调整,只有以 on 开头,且仅有一个 callback 类型的参数的函数 才能持续回调,其他函数一律只能回调一次。这种做法处理了内存问题,但带来了向下兼容的问题。
H
BuilderX 4.25版本以前向 js 暴露的 callback 是一直保存在内存中的,所有带 callback 回调的函数 都可以持续回调。
但这也带来了一个致命的问题, 当频繁长时间调用带 callback 回调的函数时,由于 callback 一直保存在内存中,会创建大量 callback 对象,造成内存暴增甚至闪退。
为了处理这个问题,从 H
BuilderX 4.25 版本开始我们做了调整,只有以 on 开头,且仅有一个 callback 类型的参数的函数才能持续回调,其他函数一律只能回调一次。这种做法处理了内存问题,但带来了向下兼容的问题,需要插件作者修改函数名(影响范围: HX 4.25 和 4.26 版本 iOS 端 uni-app 和 uni-app x, 安卓端 uni-app,单个函数或者自定义 class 中的静态或者实例函数)
为了更彻底的解决这个问题,从 H
X 4.27 版本开始,我们新增了通过装饰器(注解)的方式定义回调函数是否一直存活
。
为了更彻底的解决这个问题,从 H
BuilderX 4.27 版本开始,我们新增了通过装饰器(注解)的方式定义回调函数是否一直存活,同时符合
`以 on 开头,且仅有一个 callback 类型的参数的函数`
这个规则的函数依然可以持续回调
。
下面的方式均可以使回调函数一直存活。
...
...
@@ -1858,23 +1858,27 @@ export type Options = {
success
:
(
res
:
string
)
=>
void
}
// 以 on 开头,且仅有一个 callback 类型的参数的函数
export
function
onTest
(
callback
:
(
msg
:
string
)
=>
void
)
{
callback
(
"
a
"
)
callback
(
"
b
"
)
}
// 使用 @UTSJS.keepAlive 注解方式,不限制参数个数
@
UTSJS
.
keepAlive
export
function
test
(
callback
:
(
msg
:
string
)
=>
void
)
{
callback
(
"
a
"
)
callback
(
"
b
"
)
}
// 使用 @UTSJS.keepAlive 注解方式,callback 可以包含在自定义type中
@
UTSJS
.
keepAlive
export
function
testOption
(
option
:
Options
)
{
option
.
success
(
"
a
"
)
option
.
success
(
"
b
"
)
}
// 以上规则在自定义class中同样适用
export
class
Test
{
onTest
(
callback
:
(
msg
:
string
)
=>
void
)
{
callback
(
"
a
"
)
...
...
@@ -1908,6 +1912,11 @@ export class Test {
}
```
> 特别注意:
> 1. 如果带了该装饰器,则该方法参数里的所有回调都会在内存中持续存在
> 2. 目前装饰器不支持 export const test:Test = ()=>{} // 这种导出方式,需要使用export function test(){}
## Bug & Tips@tips
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录