Promise的基本使用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
// 什么情况下使用Promise?
// 一般情况下是有异步操作时,使用Promise对这个异步操作进行封装
// new ->构造函数(1.保存了一些状态信息 2.执行传入的函数)
// 在执行传入的回调函数时,会传入两个参数resolve reject,本身又是函数
new Promise((resolve,reject)=>{
setTimeout(()=>{
// 成功是调用resolve
// resolve("hello world")
// 失败时调用reject
reject("erro message")
},1000)
}).then(data=>{
console.log(data)
}).catch(err=>{
console.log(erro)
})
</script>
</body>
</html>
Promise的另外处理形式
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<!-- <script>
new Promise((resolve,reject)=>{
setTimeout(()=>{
// resolve("Hello VueJs")
reject("erro message")
},1000)
}).then( data =>{
console.log(data)
},erro =>{
console.log(erro)
}
)
</script> -->
<script>
new Promise((resolve,reject) => {
setTimeout(() => {
// resolve("aaa")
reject("erro message")
},1000)
}).then(data => {
console.log(data)
},erro=>{
console.log(erro)
})
</script>
</body>
</html>
Promise的链式调用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
// 第一种方式
// new Promise((resolve,reject) => {
// setTimeout(() => {
// resolve("Hello Message")
// },1000)
// }).then((data) => {
// // 1.自己处理
// console.log(data,"第一层代码");
// // 2.对结果进行第一次处理
// return new Promise(resolve => {
// resolve(data + "111")
// }).then((data) => {
// console.log(data,"第二层代码");
// // 3.对结果进行第三次处理
// return new Promise(resolve => {
// resolve(data)
// }).then(data => {
// console.log(data+3333,"第三次代码")
// })
// })
// })
// 第二种简写方式
new Promise((resolve,reject) => {
setTimeout(() => {
resolve("aaaa");
},1000)
}).then(res => {
// 1.自己对结果处理
console.log(res);
return Promise.resolve(res).then(res => {
// 2.对结果的第二次处理
console.log(res+"222");
return Promise.resolve(res).then(res => {
// 3.对结果的第三次处理
console.log(res+"3333")
})
})
}).catch(err => {
console.log(err)
})
// 第三种简写方式
// new Promise(resolve => {
// setTimeout(() => {
// resolve("好无聊")
// },1000)
// }).then(res => {
// console.log(res);
// return res
// }).then(res => {
// console.log(res+"1111");
// return res
// }).then(res => {
// console.log(res+"222")
// })
</script>
</body>
</html>
Promise的all方法的使用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
Promise.all([
new Promise((resolve,reject) => {
setTimeout(() => {
resolve({name:'Bob',age:20})
},1000)
}),
new Promise((resolve,reject) => {
setTimeout(() => {
resolve({name:'Alice',age:22})
})
})
]).then(res => {
console.log(res)
})
</script>
</body>
</html>