zoukankan      html  css  js  c++  java
  • JS 异步编程与Promise,还有async与await实例详解

    宏任务与微任务

    • 宏任务,例如定时器。
    • 微任务,例如Promise。Promise生产微任务,多个微任务依次执行。只有改变状态才会产生微任务。
    • 微任务优先宏任务执行。

    JS中任务处理的顺序

    同步的任务>微任务(Promise)>宏任务(定时器)

    then

    Promise和then是配套出现的,then是对上一个Promise状态改变的处理。每个then返回的其实也是一个Promise。
    then返回值的处理技巧:后面的then就是对前面返回的promise的处理。

    后台异步请求封装成Promise

    各种异步请求的方式

    Promise默认返回成功

    Promise.then也是一个Promise

    简单的Promise小例子

    <script>
    //pending  准备阶段
    //resolved  成功状态
    //rejected  拒绝状态
    new Promise((resolve,reject)=>{
        reject("拒绝状态");
        //resolve("操作成功")
    }).then(
        value => {
        console.log("成功业务处理");
       },
       reason => {
        console.log("拒绝的业务处理");
       }
    );
    </script>
    

    在宏任务内部创建的微任务,宏任务的任务处理顺序优先微任务,因为微任务是在宏任务执行过程当中创建出来的。如下

    <script>
     let promise = new Promise(resolve => {
         setTimeout(() => {
             console.log("setTimeout");
             resolve();
         },0);
        console.log("test1");
    }).then(value => console.log("操作成功"));
     console.log("test2");
    </script>
    
    //控制台输出顺序为:
    //test1
    //test2 
    //setTimeout
    //操作成功
    

    Promise.all批量获取数据

  • 相关阅读:
    springboot整合log4j2
    document解析html
    关于字符串读写乱码的解决方法浅谈
    BOM知识整理
    es6的Map()构造函数
    es6的Set()构造函数
    关于node的path模块
    java总结(方法与对象)
    webpack3.0+总结
    java总结(二)(运算符)
  • 原文地址:https://www.cnblogs.com/songsongblue/p/12511990.html
Copyright © 2011-2022 走看看