|
@@ -0,0 +1,112 @@
|
|
|
+<!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>
|
|
|
+ // setTimeout(()=>{
|
|
|
+ // console.log(1)
|
|
|
+ // setTimeout(()=>{
|
|
|
+ // console.log(2)
|
|
|
+ // },500)
|
|
|
+ // },1000)
|
|
|
+
|
|
|
+
|
|
|
+ // new Promise((resolve,reject)=>{
|
|
|
+ // setTimeout(()=>{
|
|
|
+ // console.log(4)
|
|
|
+ // resolve()
|
|
|
+ // },1000)
|
|
|
+ // }).then(()=>{
|
|
|
+ // console.log('r')
|
|
|
+ // }).catch(()=>{
|
|
|
+ // console.log('失败')
|
|
|
+ // })
|
|
|
+
|
|
|
+
|
|
|
+ // function fetchData() {
|
|
|
+ // return new Promise((resolve, reject) => {
|
|
|
+ // setTimeout(() => {
|
|
|
+ // const data = 'hello word'
|
|
|
+ // if (data) {
|
|
|
+ // resolve(data)
|
|
|
+ // } else {
|
|
|
+ // reject('Error')
|
|
|
+ // }
|
|
|
+ // },1000)
|
|
|
+ // })
|
|
|
+ // }
|
|
|
+
|
|
|
+ // fetchData().then((data)=>{
|
|
|
+ // console.log(data)
|
|
|
+ // }).catch((error)=>{
|
|
|
+ // console.log(err)
|
|
|
+ // })
|
|
|
+ // fetchData()
|
|
|
+
|
|
|
+ /*
|
|
|
+ 函数返回一个promise对象,在promise的构造函数当中,执行异步操作,根据操作结果调用
|
|
|
+ resolve或者reject方法,在then方法中,可以执行异步操作成功的方法,catch方法中 可以执行失败的方法
|
|
|
+
|
|
|
+ */
|
|
|
+
|
|
|
+ /*
|
|
|
+ promise 有三种状态 pending(进行中) fulfilled(已成功) rejected(已失败)
|
|
|
+
|
|
|
+ 1.当一个promise 被创建的时候 初始状态就是pending
|
|
|
+ 2.当异步操作成功执行的时候,promise的状态会变为fulfilled 并且会调用then方法中
|
|
|
+ 的回调函数
|
|
|
+ 3.当异步操作失败的时候,promise的状态会变为rejected 就会调用.catch()中的回调函数
|
|
|
+ */
|
|
|
+
|
|
|
+ let p1 = new Promise((resolve, reject) => {
|
|
|
+ // setTimeout(() => {
|
|
|
+ // console.log(1)
|
|
|
+ // reject()
|
|
|
+ // }, 1000);
|
|
|
+ console.log(1)
|
|
|
+ resolve()
|
|
|
+ })
|
|
|
+ let p2 = new Promise((resolve, reject) => {
|
|
|
+ setTimeout(() => {
|
|
|
+ console.log(2)
|
|
|
+ // resolve()
|
|
|
+ reject()
|
|
|
+ }, 800);
|
|
|
+ })
|
|
|
+ let p3 = new Promise((resolve, reject) => {
|
|
|
+ // setTimeout(() => {
|
|
|
+ // console.log(3)
|
|
|
+ // resolve()
|
|
|
+ // }, 2000);
|
|
|
+ console.log(3)
|
|
|
+ // reject()
|
|
|
+ resolve()
|
|
|
+ })
|
|
|
+
|
|
|
+ /* promise.all()用于将多个promise实例 包装成一个新的promise实例 */
|
|
|
+ // Promise.all([p1,p2,p3]).then(()=>{
|
|
|
+ // console.log('ok')
|
|
|
+ // }).catch(()=>{
|
|
|
+ // console.log('error')
|
|
|
+ // })
|
|
|
+ Promise.race([p1, p2, p3]).then(() => {
|
|
|
+ console.log('ok')
|
|
|
+ }).catch(() => {
|
|
|
+ console.log('error')
|
|
|
+ })
|
|
|
+ /* Promise.race 将多个promise实例 包装成一个promise实例 */
|
|
|
+ /*
|
|
|
+ 任何一个promise对象为失败,就会返回失败的状态
|
|
|
+ 不会管在执行异步操作的promise
|
|
|
+ */
|
|
|
+ </script>
|
|
|
+</body>
|
|
|
+
|
|
|
+</html>
|