Promise作用:解决异步回调的问题
<script>
{
let a = 11;
let promise = new Promise(function (resolve, reject) {
//resolve 成功调用 reject失败调用
if (a == 10) {
console.log('成功')
} else {
console.log('失败鸟')
}
})
promise.then(res => {
console.log(res)
}, err => {
console.log(err)
}).catch(err => { //reject,发生错误
console.log(err)
})
}
</script>
简写方法
<script>
new promise(fun(resolve,reject)).then(res => {}).catch(err => {})
</script>
<script>
// resolve 将现有的东西转成一个promise对象 成功状态
// reject 将现有的东西转成一个reject对象 失败状态
{
new Promise((resolve, reject) => {
resolve(1);
console.log(2);
}).then(res => {
console.log(res);
});
// 2
// 1
}
{
new Promise((resolve, reject) => {
reject(1);
}).then(res => {
console.log(res);
}).catch(err => {
console.log(err) //1
});
}
</script>
<script>
// promise.all([p1,p2,p3]) all必须确定全部是resolve状态
{
let p1 = Promise.resolve('aaa');
let p2 = Promise.resolve('bbb');
let p3 = Promise.resolve('ccc');
Promise.all([p1, p2, p3]).then(res => {
console.log(res) //["aaa", "bbb", "ccc"]
console.log(...res) //aaa bbb ccc
let [res1, res2, res3] = res;
console.log(res1, res2, res3)
})
}
</script>
练手
<script>
let a = 0;
var newPromise = new Promise((resolve, reject) => {
if (a == 0) {
resolve('成功')
} else {
reject('失败')
}
})
newPromise.then((res) => {
console.log(res)
}).catch(err => {
console.log(err)
})
</script>
<script>
function api(options) {
return new Promise((resolve, reject) => {
if (options == 0) {
resolve('成功')
} else {
reject('失败')
}
})
}
api(1).then(res=>{
console.log(res)
}).catch(err=>{
console.log(err)
})
//打印结果 失败
api(0).then(res=>{
console.log(res)
}).catch(err=>{
console.log(err)
})
//打印结果 成功
</script>