改变事件执行顺序

直接点击提交执行submitFn,点击输入框后再点击提交等待onBlur执行完后执行提交#

不要忘记finally置空#

<template>
  <el-input @blur="onBlur" v-model="input" placeholder="Please input" style="width:200px" />
  <el-button @click="submitFn" type="primary">提交</el-button>
</template>

<script>
import { reactive, toRefs, ref } from 'vue'
export default {
  setup () {
    const input = ref('')
    let inputLoading = null

    const onBlur = () => {
      inputLoading = new Promise(resolve => {
        console.log('onBlurStart')
        setTimeout(() => {
          console.log('onBlurEnd')
          resolve()
        }, 2000)
        //不要忘记finally置空
      }).finally(() => {
        inputLoading = null
      })

    }
    const submitFn = () => {
      if (inputLoading) {
        inputLoading.then(() => {
          console.log('submit', 22)
        })
      } else {
        console.log('submit', 11)
      }
    }
    return { input, onBlur, submitFn }
  }
}
</script>

<style>
</style>

作者:whh666

出处:https://www.cnblogs.com/whh666/p/15872979.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   资深if-else侠  阅读(116)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示