导航

文章

最简单的异步转同步用法

Promise、Async和Await很多文档几乎看不懂,无法理解他们是如何体现作用。

Promise是ES6语法,Async和Await是ES7语法,并不是说用了Async和Await就不用Promise,而他们是相互的作用。有了Promise才会诞生Async和Await。

最简单的理解就是让他们从异步运行转为同步运行。

简单的运行

function run(){
    return 1;
}
function run2(){
    return 2   
}
function run3(){
    return 3;
}
console.log(run());
console.log(run2());
console.log(run3());
正常走123
如果我在第二步增加定时器:
function run(){
    return 1;
}
function run2(){
  setTimeout(() => {
    return 2   
  }, 1000);
}
function run3(){
    return 3;
}

console.log(run());
console.log(run2());
console.log(run3());
会出现 1 undefined 3,因为运行时候定时器1秒还没过完,run2()先执行得undefined。
增加Promise方法:
function run(){
    return 1;
}
function run2(){
    return new Promise((resolve,reject)=>{
        setTimeout(() => {
            resolve(2)
        }, 3000);
    })
}
function run3(){
    return 3;
}

console.log(run());
console.log(run2());
console.log(run3());
返回 1 、Promise { <pending> }、3

给加上Async和Await代码:

function run(){
    return 1;
}
function run2(){
    return new Promise((resolve,reject)=>{
        setTimeout(() => {
            resolve(2)
        }, 3000);
    })
}
function run3(){
    return 3;
}

async function go(){
    console.log(run());
    console.log(await run2());
    console.log(run3());
  }

go()
返回1 等1秒钟后,2,3。
是不是很简单?




TAG: