promise解决地狱回调的问题

什么是地狱回调?

回调:运行某个函数实现某个功能的时候,传入一个函数作为参数,当发生某件事情之后,会执行函数参数

回调地狱:某个异步操作需要等待之前的异步操作完成以后,无论回调是事件还是其他函数,都会陷入不断的回调

地狱回调举例:

  <button id="btn1">btn1</button>

    <button id="btn2">btn2</button>

    <button id="btn3">btn3</button>

    <script>

        const btn1 = document.getElementById("btn1")

        const btn2 = document.getElementById("btn2")

        const btn3 = document.getElementById("btn3")

        btn1.addEventListener("click",function(){

            btn2.addEventListener("click",function(){

                btn3.addEventListener("click",function(){

                    console.log("hello")

                })

            })

        })

    </script>

解决地狱回调的例子:

 <script>

        function LOL(hoer) {

            return new  Promise((resolve,reject) => {

                console.log(`我想选择${hoer}`);

                setTimeout(() => {

                    if(Math.random() < 0.4) {

                        console.log(`${hoer}是MVP`);

                        resolve(true)

                    }else {

                        console.log(`${hoer}不是MVP`)

                        resolve(false)

                    }

                },2000)

            })

        }

        const prom = [] //日志数组

        let hasAgree = false

        for(let i = 1 ; i < 10;i++){

            const por = LOL(`英雄${i}`).then(result => {

                if(result) {

                    if(hasAgree) {

                    console.log(`下次再玩${i}`);

                }else {

                    hasAgree = true

                    console.log(`下次再玩这个`)

                }

            }

               return result

            })

            prom.push(por)

        }

        console.log(prom);

        Promise.all(prom).then(result => {

            console.log("日志分析",result);

        })

    </script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值