javascript - 从对象返回和更新值
问题描述
我正在使用一个使用“场景”的动画库。场景的结构如下:
const animations = animationLibrary({
scenes: {
sceneOne: {
appear() {
// do something when scene appears
},
disappear() {
// do something when scene disappears
}
},
sceneTwo: {
appear() {
// do something when scene appears
},
disappear() {
// do something when scene disappears
}
},
}
})
对于一个大型项目,我有很多场景,大约 40 个。在过去,对于这个项目,范围不是问题,因为我通常不需要在多个函数中访问同一个变量,所以我只需要在函数中定义一个变量并在那里使用它就可以了。但是,越来越多的情况下,我想在一个方法中执行 setInterval 并在不同的函数中执行 clearInterval。我目前正在这样做:
var setIntervalId;
const animations = animationLibrary({
scenes: {
sceneOne: {
appear() {
setIntervalId = setInterval(myFunc, 1000)
},
disappear() {
clearIntervalId(setIntervalId)
}
},
}
})
我遇到的问题是随着主要场景对象的增长,其中有许多场景,似乎组织得很糟糕,有许多变量,彼此无关,出于范围原因存储在动画 const 之外。我尝试在场景中编写自己的函数,或者在场景中添加对象来存储值,但是每当我尝试在函数中返回它们时,我都会在控制台中遇到未定义的错误。
有没有办法让我存储嵌套在单个场景中的变量或值对象,并且仍然能够在同一个场景中跨函数访问和更新这些变量/值?
解决方案
只需为间隔添加一个属性。
let animation = {
scenes: {
sceneOne: {
intervalRef:null,
count:0,
appear() {
console.log("Start");
this.intervalRef = setInterval(()=> console.log(this.count++), 1000);
},
disappear() {
console.log("Finish");
clearInterval(this.intervalRef);
},
},
},
};
animation.scenes.sceneOne.appear();
setTimeout(()=>{
animation.scenes.sceneOne.disappear();
},5000)
推荐阅读
- reactjs - Twilio Video - 在 iOS 上切换相机后视频消失
- python - 获取视图不会在我的烧瓶聊天机器人上返回有效的响应错误消息
- node.js - Sendgrid Node.js 错误:将循环结构转换为 JSON
- javascript - React Bootstrap:在页面重新加载时保留当前选项卡
- python - Python - Selenium Webdriver 查找所有 div 节点具有相似名称的元素
- php - php。拉拉维尔。多重依赖注入
- c++ - 两个函数,但只有第一个函数显示输出
- string - 如果字符串中小写字母的个数为偶数则递归返回
- azure - 天蓝色应用服务容器(容器名称)未响应端口上的 HTTP ping:8080
- controller - 保存依赖于两个表的记录