zoukankan      html  css  js  c++  java
  • Promise的初体验

    前端延时随机函数模拟抽奖

    • 点击按钮,模拟抽奖
    • 延时1s返回结果
      效果:

    普通的使用回调方式的实现

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>抽奖</title>
    </head>
    <body>
        <button id="btn">点我抽奖</button>
        <script>
            // 生成随机数
            function rand(m, n){
                return Math.ceil(Math.random() * (n-m+1)) + m-1
            }
    
            const btn =  document.querySelector('#btn')
            btn.addEventListener('click', ()=>{
                setTimeout(()=>{
                     const n = rand(0, 100)
                     if(n<=30){
                         alert('恭喜中奖,奖品为劳斯莱斯优惠券满10万减10元')
                     }else{
                         alert('再接再厉')
                     }
                 }, 1000)
            })
    
        </script>
    </body>
    </html>
    

    使用Promise风格实现

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>抽奖</title>
    </head>
    <body>
        <button id="btn">点我抽奖</button>
        <script>
            // 生成随机数
            function rand(m, n){
                return Math.ceil(Math.random() * (n-m+1)) + m-1
            }
    
            const btn =  document.querySelector('#btn')
            btn.addEventListener('click', ()=>{
             //Promise对象接受一个回调函数
             //resolve 解决,函数类型
             //reject 拒绝,函数类型
            const p = new Promise((resolve, reject)=>{
                setTimeout(()=>{
                    const n = rand(0, 100)
                    if(n<=30){
                        // 可以传参数value
                        resolve(n)// 将Promise对象的状态设置为 成功
                    }else{
                        // 可以传参数reason
                        reject(n) // 将Promise对象的状态设置为 失败
                    }
                }, 1000)
            })
            
            // 调用then()方法
            p.then(
                // 成功的调用
                (value)=>{
                    alert('恭喜中奖,奖品为劳斯莱斯优惠券满10万减10元,你的号码为'+value)
                }, 
                // 失败的调用
                (reason)=>{
                    alert('再接再厉,你的号码为'+reason)
                }
            )
            })
    
        </script>
    </body>
    </html>
    
  • 相关阅读:
    产品小细节中的大体验
    产品经理的四点思考:不该简单满足用户需求
    产品经理的十大顶级错误
    SQL Server数据库大型应用解决方案总结
    java中public static void main(String[] args)中String[] args代表什么意思?
    异常处理1
    java中的String
    华为2013年西安java机试题目:如何过滤掉数组中的非法字符。
    2用java代码实现冒泡排序算法(转载)
    1用java实现冒泡排序算法以及解决的几个小问题。
  • 原文地址:https://www.cnblogs.com/pangqianjin/p/14791428.html
Copyright © 2011-2022 走看看