es6的async,await

发布时间:2019-08-09 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了es6的async,await脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

es6的async,await

Async/AwaIT应该是目前最简单的异步方案了,es7 中新增了 async/await 两个关键词。async 可以声明一个异步函数,此函数需要返回一个 Promise 对象。await 可以等待一个 Promise 对象 resolve,并拿到结果。 一个栗子:
//同步
/*console.log(1);
console.log(2);
console.log(3);
console.log(4);

//异步 ajax 文件读取io操作
console.log(1);
console.log(2);
setTimeout(function(){
    console.log(3000);
},3000);
console.log(3);
console.log(4);
//先打印1 2 3 4,隔三秒后打印3000;

//async函数返回的是resolve状态的Promise对象
async function fn(){
    return "abc";
}
let result=fn();
console.log(result);//打印:PRomise {[[Promisestatus]]: "resolved", [[PromiseValue]]: "abc"}。*/

//Promise 对象
/*let p = new Promise(function(resolve,reject){
    resolve("abc");
});

p.then(function(data){
    console.log(data);//打印abc。
});
//async函数里面的返回值传递给then方法
async function fn(){
    return "123";
}
let p1 = fn();
p1.then(function(data){
    console.log(data);//打印123.
});*/

//async函数用来处理异步

function yi1(){
    return new Promise(function(resolve,reject){
        setTimeout(function(){
        console.log("yi1_3000");
        resolve("yi1_3000");
        },3000);
    })
    
}

function yi2(){
    return new Promise(function(resolve,reject){
        setTimeout(function(){
        console.log("yi2_2000");
        resolve("yi2_2000");
        },2000);
    })
    
}

//await只能出现在异步函数里面, 
async function yibu(){
    console.log("start");
    let r1 = await yi1();
    console.log(r1);
    let r2 = await yi2();
    console.log(r2);
    return "end";
}
let P3 = yibu();
p3.then(r=>{
    console.log("end");
});

//先打印start,三秒后打印两次yi1_3000,然后隔两秒打印两次yi2_2000和end;
值得注意的是,await必须在async函数的上下文中的。
await看起来就像是同步代码,所以可以理所当然的写在for循环里,不必担心以往需要闭包才能解决的问题。
既然.then(..)不用写了,那么.catch(..)也不用写,可以直接用标准的try catch语法捕捉错误。

脚本宝典总结

以上是脚本宝典为你收集整理的es6的async,await全部内容,希望文章能够帮你解决es6的async,await所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。