[请益] vue js用变量呼叫function

楼主: asleepme (500年没换暱称了)   2018-12-11 15:51:05
请教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来处理
感觉看起来很不直觉,不知道有更好的办法吗?
感谢~
作者: DCTmaybe (竹竹人)   2018-12-11 16:03:00
所以你的问题是:如何依照用户自订的顺序去执行功能吗?
作者: a510042003 (宝咖咖啡)   2018-12-11 16:04:00
不对 你 action array里面用的是字串应该要 action [ this.action1, this.action2, this.action3 ]然后记得 settimeout不是异步function
作者: Phenomenon (Kuma)   2018-12-11 20:09:00
this[action[0]]()
作者: TitanEric (泰坦)   2018-12-11 22:34:00
楼上厉害
作者: DCTmaybe (竹竹人)   2018-12-12 00:44:00
this可以这样包methods function!?(大惊!?
作者: fukinhot (抱歉粗口我怕热)   2018-12-12 08:57:00
就取thos prop然后执行啊*this
作者: max241 (养生之道)   2018-12-12 12:26:00
user设定method array 走访array去执行method 依序等待
作者: hstt   2018-12-12 13:37:00
感觉你需要像 redux-saga之类的套件
作者: truthmanman (rain)   2018-12-23 14:16:00
rxjs ,保证处理的省力很多

Links booklink

Contact Us: admin [ a t ] ucptt.com