<script>
new Promise((resolve, reject) => {
setTimeout(() => {
reject("error message")
}, 2000)
}).then((data) => {
console.log(data);
}).catch(error => {
console.log(error);
})
</script>
- 当我们开发中有异步操作时,就可以给异步操作包装一个Promise
- 异步操作之后会有三种状态
pending: 等待状态 ,比如正在进行网络请求,或者定时器没有到时间
fulfill:满足状态,当我们主动回调了resolve 时,就处于该状态,并且会回调then()
reject: 拒绝状态,当我们主动回调了reject时,就处于该状态,并且会回调catch()
new Promise((resolve,reject)=>{
setTimeout(()=>{
reject("failed");
resolve("success");
},1000)
}).then(data=>{
console.log(data);
},err=>{
console.log(err);
})
new Promise((resolve,reject)=>{
resolve("aaa")
}).then(res=>{
return new Promise((resolve,reject)=>{
resolve(res+'111')
});
}).then(res=>{
return new Promise((resolve,reject)=>{
resolve(res+'222')
})
}).then(res=>{
console.log(res+'333');
})
new Promise((resolve, reject) => {
resolve("aaa")
}).then(res => {
return Promise.resolve(res + '111')
}).then(res => {
return Promise.resolve(res + '222')
}).then(res => {
return console.log(res + '333');
})
new Promise((resolve, reject) => {
setTimeout(()=>{
resolve("aaa")
},2000)
}).then(res => {
return res + '111'
}).then(res => {
return res + '222'
}).then(res => {
return console.log(res + '333');
})
new Promise((resolve, reject) => {
setTimeout(()=>{
resolve("aaa")
},2000)
}).then(res => {
console.log(res);
return Promise.reject('第二层error')
}).then(res => {
return Promise.resolve(res + '222')
}).then(res => {
return console.log(res + '333');
}).catch(err=>{
console.log(err);
})
</script>
Promise.all([
new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve('result1')
})
}),
new Promise((resolve,reject) =>{
setTimeout(()=>{
resolve('result2')
})
})
]).then(results =>{
console.log(results);
})