• 认识promise:相较于普通回调函数、Promise具有保存状态的特点


    普通的回调函数

    没错,如你所想,点击事件一旦触发以后就结束了,你无法保证这个点击事件的状态保持存在。(不排除可以使用定时器的方案延时获取状态,但这个定时器的指定一定是在回调函数触发之前)

    <body>
    
      <button @click="btnClick">按钮</button>
    
      <script>
        let Btn = document.querySelector('button')
    
        Btn.onclick = function () {
          console.log('我被点击了'); //'我被点击了'
          // 做一些操作,这个状态不能保留
        }
      </script>
    </body>
    

    Promise

    在promise中,一个回调函数的执行结果的状态可以得到保持,可以在promise状态发生改变后的时间里去拿到这个状态做一些处理(需要做处理的时间不需要在Promise状态改变之前就提前指定):很方便只需要.then就可以。

    <body>
    
      <button @click="btnClick">按钮</button>
    
      <script>
        let Btn = document.querySelector('button')
    
        let P1 = new Promise(function (resolve, rej) {
          Btn.onclick = function () {
            //异步任务成功执行后,promise改变状态为resolve,状态改变以后不能再次改变状态,
            //并且随时可以获取这个状态
            resolve('我被点击了');
           // 状态改变并保留
          }
        })
    
        P1.then(resolve => {
          // 做一些操作
          console.log(resolve); //'我被点击了'
        })
    
        setTimeout(function () {
          // 一段时间后做一些操作:由于状态改变为resolve,所以状态改变后的时间里都可以获取这个状态
          P1.then(resolve => {
            console.log(resolve);//'我被点击了'
          })
        }, 5000)
    
      </script>
    </body>
    

    总结:promise可以在状态改变以后再指定回调函数(使用已经产生的状态):(promise可以在状态改变之后再指定回调函数),而普通回调函数指定回调函数一定是在函数调用之前(必须在函数调用之前指定回调函数)。

  • 相关阅读:
    关于宏定义与内联函数
    vsv
    nginx与php之间的通信
    php高级
    PHP基础知识
    php结合redis实现高并发下的抢购、秒杀功能
    MySQL索引优化
    PHP基础(谈一谈Session&Cookie)
    Yii2框架查询指定字段和获取添加数据的id
    linux常用命令
  • 原文地址:https://www.cnblogs.com/xjt31/p/14015707.html
Copyright © 2020-2023  润新知