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>
    
  • 相关阅读:
    #Leetcode# 204. Count Primes
    #Leetcode# 202. Happy Number
    #Leetcode# 8. String to Integer (atoi)
    VMWare(虚拟机) 网络配置模式 :桥接模式、nat模式、主机模式
    领域的建立
    需求获取的前期工作(不断更新)
    2.4文件查找与文件列表
    2.3录制并回放终端会话
    2命令之乐,2.1简介
    1.7比较与测试
  • 原文地址:https://www.cnblogs.com/pangqianjin/p/14791428.html
Copyright © 2011-2022 走看看