// 需要递归的函数
const recallPromise = function(a) {
return new Promise((resolve, reject) => {
setTimeout(() => {
const result = a * 2
resolve(result)
}, 1000)
}).then(res => {
// 此处接收的res是上面resolve的result,
// 判断结果是否大于30,大于就停止递归,不大于的话,就继续乘以2
console.log(res)
if(res >= 30) {
return Promise.resolve(res)
} else {
return recallPromise(res)
}
})
}
// 在aa方法中调用递归的promise函数
const aa = async function() {
console.log(11111111111)
const res = await recallPromise(3) // 等待promise的递归结束,才进行下面的代码
console.log(res)
console.log(22222222222222)
}
aa()
说明:重复调用recallPromise 这个方法,知道最终的结果大于30,才停止递归