• Promise异步编程


    异步编程

    我们所常见的异步编程:

    1.上传文件
    2.http请求
    3.解析文件

    解决方案

    promise

    定义:Promise是js异步编程的新的解决方案

    具体来说:1.从语法上说,Promise是一个构造函数
    2.从功能上说,Promise是对象用来封装一个异步操作并可以获取其结果

    它的状态(三种):pading,resolved,rejected

    它的状态初始是pading,当他的 状态发生并确认后,状态将不能发生改变

    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>Documenttitle>
    head>
    <body>
        <script>
            //使用Promise的步骤:
                    // 1.定义一个Promise构造对象,并传入一个回调函数
                    // 2.回调函数定义两个参数,用来修改状态并且获取结果值
                    // 3.Promise通过两种方法来获取其结果值:then  和 catch
                    // 4.Promise还有all方法,用来检测异步操作是不是全部完成,完成时执行其方法
                    // 5.Promise 还有 race用来监听一个异步编程是否在一定时间内完成,否则直接运行其他的异步编程
            let p =new Promise((relove,reject)=>{
                setTimeout(()=>{
                    relove("成功的回调123")//状态改为成功reloved
                    reject("失败的回调")//状态改为失败rejected
                },2000)
            });
            p.then((value)=>{
                console.log(value);//获取成功的回调的值
            },(reson)=>{
                console.error(reson);//获取失败的回调的值
            })
            let p1 =new Promise((relove,reject)=>{
                setTimeout(()=>{
                    relove("成功的回调")//状态改为成功reloved
                    reject("失败的回调")//状态改为失败rejected
                },2000)
            });
            p1.then((value)=>{
                console.log(value);//获取成功的回调的值
            },(reson)=>{
                console.error(reson);//获取失败的回调的值
            })
    
            //监听全部的Promise是不是全部获取到了值,返回他们结果值集合
            const all = Promise.all([p,p1]);
            all.then((value)=>{
                console.log(value);
            },(reson)=>{
                console.log(reson);
            })
    
            // 监听异步编程集合中的前面的编程是否在第二个编程执行完,如果执行完了,将返回第一个结果值,否则反之
            const race = Promise.race([p1,p]);
            race.then((value)=>{
                console.log('1',value);
            }).catch((reson)=>{
                console.error(reson);
            })
        script>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
  • 相关阅读:
    NET 使用自带 DI 批量注入服务(Service)和 后台服务(BackgroundService)
    StringBuffer类 和StringBuilder类
    Nginx + Keepalived 高可用集群部署
    Linux 下获取进程所在文件的路径
    Leetcode -2
    【高项】- 范围管理论文
    基于深度学习的图像生成与识别技术研究
    灵活的IP网络测试工具——— X-Launch
    【多媒体技术与实践】使用OpenCV处理图像(实验三.上)
    【算法】选择排序
  • 原文地址:https://blog.csdn.net/weixin_51666715/article/details/126795987