zheng 4 дней назад
Родитель
Сommit
3ec0178525
1 измененных файлов с 113 добавлено и 0 удалено
  1. 113 0
      js高级/24.Promise.html

+ 113 - 0
js高级/24.Promise.html

@@ -0,0 +1,113 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+</head>
+
+<body>
+    <script>
+        /**
+         * js执行机制
+         * 单线程 
+         * 同步代码 异步代码
+         * Promise 将异步转为同步流程的对象
+         * 三种状态
+         * pending 等待
+         * fulfilled 成功
+         * reject 失败
+         * 状态一旦改变 不可逆
+         */
+        // setTimeOut setInterval
+        // 基础写法
+        new Promise((resolve, reject) => {
+            setTimeout(() => {
+                console.log("你好")
+            }, 2000)
+            // resolve();
+            reject();
+        }).then(res => {
+            console.log('1')
+        }).catch(err => {
+            console.log('2')
+        }).finally(() => {
+            // 无论结果 成功失败 全部执行
+            console.log("哈哈哈哈")
+        })
+        // 链式调用
+        // const news = new Promise((resolve, reject) => {
+        //     setTimeout(() => {
+        //         console.log("你好")
+        //         resolve();
+        //         reject();
+        //     }, 2000)
+        // })
+
+        // news.then(res => {
+        //     console.log('11')
+        // })
+        // news.catch(err => {
+        //     console.log('22')
+        // })
+
+        // 回掉地狱
+        // setTimeout(() => {
+        //     setInterval(() => {
+        //         setTimeout(() => {
+        //         })
+        //     })
+        // })
+
+        // 静态方法
+        const p1 = new Promise((resolve, reject) => {
+            resolve();
+        });
+           
+
+        const p2 = new Promise((resolve, reject) => {
+            reject();
+        });
+         
+
+        const p3 = new Promise((resolve, reject) => {
+            reject();
+        });
+         
+
+        // Promise.all 全部成功才成功 一个失败则失败
+        // promise中的方法并行执行
+        // resolve 返回的结果是数组
+        // Promise.all([p1,p2,p3]).then(res => {
+        //     console.log('成功',res)
+        // }).catch((err) => {
+        //     console.log("失败",err)
+        // })
+
+        // Promise.race 谁先执行完成 返回其结果 无论成功或失败
+        // Promise.race([p2, p1, p3]).then(res => {
+        //     console.log('成功', res)
+        // }).catch((err) => {
+        //     console.log("失败", err)
+        // })
+
+
+        // Poromise.allSettled 无论成功失败 全部等待执行完成 返回每一个的状态
+        //  Promise.allSettled([p2, p1, p3]).then(res => {
+        //     console.log('成功', res)
+        // }).catch((err) => {
+        //     console.log("失败", err)
+        // })
+
+
+        // Promise.any 一个成功就成功 全部失败才失败
+         Promise.any([p2, p1, p3]).then(res => {
+            console.log('成功', res)
+        }).catch((err) => {
+            console.log("失败", err)
+        })
+    </script>
+</body>
+
+</html>