// promise提供传参数和报错
function test1 (value=0, count=0) {
return new Promise ((resolve, reject) => {
let num = Math.random()
// resolve 代表的异步成功回调, reject 代表的是失败
if (num > 0.3) {
console.log(num)
resolve(num + value)
} else {
reject({value:(num + value),count:count})
}
})
}
//执行调用会有嵌套地狱
test1().then(res =>{
return test1(res, 0)
}).then(res =>{
return test1(res, 1)
}).then(res =>{
return test1(res, 2)
}).then(res =>{
return test1(res, 3)
}).then(res =>{
return test1(res, 4)
}).then(res =>{
return test1(res, 5)
}).then(res =>{
return test1(res, 6)
}).catch(error => {
console.log(error, 44)
})
//在上面也会出现嵌套地狱的问题,代码不够简洁,下面是使用asyn会让代码更加简洁
function test2 (value=0, count=0) {
return new Promise ((resolve, reject) => {
let num = Math.random()
if (num > 0.3) {
console.log(num)
resolve(num + value)
} else {
reject({value:(num + value),count:count})
}
})
}
async function aaa () {
try{
let req1 = await test2()
let req2 = await test2(req1, 1)
let req3 = await test2(req2, 2)
let req4 = await test2(req3, 3)
let req5 = await test2(req4, 4)
let req6 = await test2(req5, 6)
let req7 = await test2(req6, 6)
let req8 = await test2(req7, 7)
let req9 = await test2(req8, 8)
}catch(e){
console.log(e)
}
}
//执行异步操作 aaa()