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批量获取数据

posted on 2020-03-17 17:16  songsong_p_blue  阅读(314)  评论(0编辑  收藏  举报