3-Promise改变状态与指定回调顺序的问题

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      let p = new Promise((resolve, reject) => {
        // 如果里面是同步任务,就先改变状态,然后执行then方法,并且执行相应的回调
        // 如果是异步任务,就先执行then方法,并且指定回调,然后再改变状态(后面再执行相应回调中的代码),两种顺序都可执行成功!---里面是异步任务的情况居多,异步任务的时候如何延长then方法中的回调,比如resolve的改变状态是一秒,可以给then方法加2秒的定时器再去执行
        // 总结:同步任务就是改变状态,后指定回调;异步任务就是先指定回调,后改变状态
        // 不管是同步任务,还是异步任务,then方法中的数据都会在状态改变完成之后,再去获取
        setTimeout(() => {
          resolve("Ok");
        }, 1000);
      });

      setTimeout(() => {
        p.then(
          (value) => {
            console.log(value);
          },
          (reason) => {
            console.log(reason);
          }
        );
      }, 2000);
    </script>
  </body>
</html>
posted @ 2022-01-02 16:36  问某完红  阅读(77)  评论(0编辑  收藏  举报