Promise 递归

2020-05-30  本文已影响0人  彩虹_af2e
        // 需要递归的函数
         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,才停止递归

上一篇 下一篇

猜你喜欢

热点阅读