| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- <!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>
|