1.基本使用
结果二选一
//语法
let p = new Promise((ressvle, reject) => {
if (Math.random() > 0.5) {//生成随机数判断
ressvle("成功的数据")
} else {
reject('失败的数据')
}
})
// 使用
p.then((data) => {//成功 返回ressvle里的代码
console.log(data);
}).catch((err) => {//失败 返回reject里的代码
console.log(err);
})
2.链式调用
//语法
let p1 = new Promise((ressvle, reject) => {
if (Math.random() > 0.5) {//生成随机数判断
ressvle("成功的数据")
} else {
reject('失败的数据')
}
})
let p2 = new Promise((ressvle, reject) => {
if (Math.random() > 0.5) {//生成随机数判断
ressvle("成功的数据")
} else {
reject('失败的数据')
}
})
let p3 = new Promise((ressvle, reject) => {
if (Math.random() > 0.5) {//生成随机数判断
ressvle("成功的数据")
} else {
reject('失败的数据')
}
})
// 使用
p1.then((data) => {//成功 返回ressvle里的代码
console.log(data);
return p2
}).then((data) => {//成功 返回ressvle里的代码
console.log(data);
return p3
}).then((data) => {//成功 返回ressvle里的代码
console.log(data)
})
3.等待所有事件执行完后执行
//语法
let p1 = new Promise((ressvle, reject) => {
setTimeout(() => {
if (Math.random() > 0.5) {//生成随机数判断
ressvle("成功的数据")
} else {
reject('失败的数据')
}
}, Math.random() * 5000)
})
let p2 = new Promise((ressvle, reject) => {
setTimeout(() => {
if (Math.random() > 0.5) {//生成随机数判断
ressvle("成功的数据")
} else {
reject('失败的数据')
}
}, Math.random() * 5000)
})
let p3 = new Promise((ressvle, reject) => {
setTimeout(() => {
if (Math.random() > 0.5) {//生成随机数判断
ressvle("成功的数据")
} else {
reject('失败的数据')
}
}, Math.random() * 5000)
})
// 使用 等待全部执行完后,再执行下面的数据
Promise.all([p1, p2, p3])
.then((res) => { console.log(res); })
.catch((err) => { console.log(err); })
3.比赛机制 谁先执行完就执行谁
//语法
let p1 = new Promise((ressvle, reject) => {
setTimeout(() => {
if (Math.random() > 0.5) {//生成随机数判断
ressvle("成功的数据")
} else {
reject('失败的数据')
}
}, Math.random() * 5000)
})
let p2 = new Promise((ressvle, reject) => {
setTimeout(() => {
if (Math.random() > 0.5) {//生成随机数判断
ressvle("成功的数据")
} else {
reject('失败的数据')
}
}, Math.random() * 5000)
})
let p3 = new Promise((ressvle, reject) => {
setTimeout(() => {
if (Math.random() > 0.5) {//生成随机数判断
ressvle("成功的数据")
} else {
reject('失败的数据')
}
}, Math.random() * 5000)
})
// 使用 谁先执行完就执行谁
Promise.race([p1, p2, p3])
.then((res) => { console.log(res); })
.catch((err) => { console.log(err); })