作者asleepme (500年没换昵称了)
看板Soft_Job
标题[请益] vue js用变数呼叫function
时间Tue Dec 11 15:51:05 2018
请教js大大们,有个应用是要依序执行3个动作 action1, aciton2, action3
每个动作间会有delay, delay1, delay2, delay3
action的顺序是让user可以设定的ex: action1,2,3 or action3,1,2
这样我是不是可以把user设定好的顺序存成一个array叫actions好了
然後value刚好就是依序要执行的action的function name
actions = [ 'action3', 'action2', 'action1'];
然後像这样用 actions[0]();
但是每个action是写在vue的methods里面,所以实际上要执行action会像这样
this.action1();
如果想用变数的方式处理,就会变成
currentAction = actions[0];
this.currentAction()
显然这样是不可行的
有什麽办法可以处理这个问题呢?
另外每个动作间的delay我是用setTimeout来处理
感觉看起来很不直觉,不知道有更好的办法吗?
感谢~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.136.67.63
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1544514668.A.DB0.html
1F:推 DCTmaybe: 所以你的问题是:如何依照用户自订的顺序去执行功能吗? 12/11 16:03
非常精辟,感谢,哈哈,是的,简单说就是DCT大大的结论 XD
2F:推 a510042003: 不对 你 action array里面用的是字串 12/11 16:04
3F:→ a510042003: 应该要 action [ this.action1, this.action2, this.a 12/11 16:04
4F:→ a510042003: ction3 ] 12/11 16:04
5F:→ a510042003: 然後记得 settimeout不是非同步function 12/11 16:06
谢谢,settimeout是async这件事是知道的
所以一定要存进actions就设定完整的function name罗?
※ 编辑: asleepme (223.136.67.63), 12/11/2018 16:15:06
6F:推 a510042003: 是啊 你要在action array 塞function的 reference 他 12/11 17:41
7F:→ a510042003: 才知道指引到哪一个 12/11 17:41
8F:推 Phenomenon: this[action[0]]() 12/11 20:09
9F:推 TitanEric: 楼上厉害 12/11 22:34
10F:推 DCTmaybe: this可以这样包methods function!?(大惊!? 12/12 00:44
11F:推 fukinhot: 就取thos prop然後执行啊 12/12 08:57
12F:推 fukinhot: *this 12/12 09:02
13F:→ max241: user设定method array 走访array去执行method 依序等待 12/12 12:26
14F:→ hstt: 感觉你需要像 redux-saga之类的套件 12/12 13:37
15F:推 truthmanman: rxjs ,保证处理的省力很多 12/23 14:16