promise 是异步编程的一种解决方案
Promise对象表示异步操作的最终完成(或失败)及其结果值
promise 三种状态
- pending:等待状态, 比如 正在进行网路请求 或者定时器没有到时间
- fulfill :满足状态 当我们 主动回调了 resolve时 就处于该状态 并且会回调 .then()
- reject:拒绝状态 当我们主动回调reject时 就处于该状态 并且会回调.catch()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
setTimeout(()=>{
console.log('异步操作')
},1000)
new Promise((resolve, reject) =>{
setTimeout(()=>{
resolve()
},1000)
}).then(()=>{
console.log('hello')
console.log('hello')
console.log('hello')
return new Promise((resolve, reject)=>{
setTimeout(()=>{
resolve()
},1000)
})
}).then(()=>{
console.log('hello World')
console.log('hello World')
console.log('hello World')
return new Promise((resolve, reject)=>{
setTimeout(()=>{
resolve()
},1000)
})
});
new Promise(( resolve, reject)=>{
setTimeout(()=>{
reject('error message')
},1000)
}).then(data=>{
console.log(data)
console.log(data)
}).catch(err=>{
console.log(err)
console.log(err)
console.log(err)
})
new Promise((resolve, reject)=>{
setTimeout(()=>{
reject('err')
},1000)
}).then((data)=>{
console.log(data)
},err=>{
console.log(err)
})
</script>
</body>
</html>
- 方法promise.then()、promise.catch()和promise.finally()用于将进一步的操作与已解决的承诺相关联。
- 该.then()方法最多接受两个参数;第一个参数是承诺的已解决案例的回调函数,第二个参数是被拒绝案例的回调函数。每个都.then()返回一个新生成的 promise 对象,可以选择性地用于链接;