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

楼主: LoserWon (鲁蛇王)   2018-12-11 16:30:13
※ 引述《asleepme (500年没换暱称了)》之铭言:
: 请教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来处理
: 感觉看起来很不直觉,不知道有更好的办法吗?
: 感谢~
第二个问题
觉得这样还算直觉
let delay = (i) => new Promise(r => { setTimeout(r, i) })
async whatever() {
todo1()
delay(1000)
todo2()
delay(5566)
}
第一个问题
methods: {
inline(actions) {
for(let action of actions) {
this[action]()
}
}
execute(todos) {
this.inline(todos)
}
}
要这样玩的话最好是用TS,JS容易炸掉

Links booklink

Contact Us: admin [ a t ] ucptt.com