vue多个等待几秒再执行,可以用await加setTimeout实现

用的vue,刚开始一直想只用setTimeout

//错误示意
liucheng(){
    var _this = this;
    _this.active = 'flipped';
	setTimeout(
		_this.active = '';
	, 2000)
	setTimeout(
		_this.active = 'flipped';
	, 2000)
},

上面这样连续两个,第一个setTimeout不执行
所以后面用async+await(里面setTimeout)就可以了
因为要等await返回结果才往下面执行

//正确示意
async liucheng(){
    var _this = this;
    _this.active = 'flipped';
    await new Promise(res => setTimeout(res, 2000))  //等待后执行,1000为1秒
    _this.active = '';
    await new Promise(res => setTimeout(res, 2000))  //等待后执行,1000为1秒
    _this.active = 'flipped';
}
Vue实现多个点击事件的顺序执行,可以通过以下几种方式来确保事件按照预期顺序触发。 ### 使用单个 `@click` 绑定多个函数 在 Vue 模板中,可以在一个 `@click` 指令中绑定多个函数,通过分号分隔或直接连续调用。这些函数将按照声明顺序依次执行。例如: ```html <button @click="handleFirst(); handleSecond()">点击</button> ``` 在上述代码中,`handleFirst` 会先于 `handleSecond` 执行。这种方式适用于函数之间没有依赖关系,但需要保证执行顺序的场景[^1]。 ### 使用 `Promise` 控制异步事件顺序 当多个点击事件涉及异步操作(如调用 API 或使用 `setTimeout`)时,可以使用 `Promise` 实现顺序执行。通过 `async/await` 可以清晰地控制异步函数的执行流程,确保前一个函数完成后再执行下一个。 ```html <button @click="handleClick">点击</button> ``` ```javascript methods: { async handleClick() { await this.fun1(); await this.fun2(); await this.fun3(); }, fun1() { return new Promise(resolve => { console.log("1"); resolve(); }); }, fun2() { return new Promise(resolve => { console.log("2"); resolve(); }); }, fun3() { return new Promise(resolve => { console.log("3"); resolve(); }); } } ``` 通过这种方式,可以确保 `fun1` 执行完毕后再执行 `fun2`,`fun2` 完成后再执行 `fun3`,从而实现严格的顺序控制[^4]。 ### 使用事件修饰符控制执行顺序 在 Vue 3 中,点击事件的触发顺序是先执行事件修饰符,然后再触发监听函数。这意味着可以在事件处理中使用 `.stop`、`.prevent` 等修饰符来影响事件传播或默认行为,而不会干扰后续的事件处理逻辑。例如: ```html <button @click.stop="handleClick">点击</button> ``` 在此例中,`.stop` 修饰符会先阻止事件冒泡,然后才执行 `handleClick` 方法。这种机制允许开发者在不改变函数执行顺序的前提下,对事件进行预处理[^2]。 ### 使用多个 `@click` 指令绑定事件 Vue 允许为同一个元素绑定多个 `@click` 指令,这些事件处理函数将按照绑定顺序依次执行: ```html <button @click="handleFirst" @click="handleSecond">点击</button> ``` 在上述代码中,`handleFirst` 会在 `handleSecond` 之前执行。这种绑定方式适用于需要为同一个元素绑定多个独立逻辑的场景,且每个函数之间没有依赖关系[^3]。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值