Promise/async,await

161 阅读1分钟
1,promise

es6 新语法 Promise语法:就是为了解决回调地狱问题

个人理解:

new Promise立即执行 当执行到resolve()或reject()方法时,执行then并携带参数

在then()中必须return返回一个new Promise()对象才可以执行下一次的then()方法

new Promise(function(resolve,reject){
    var str = "";
    setTimeout(function(){
        str = str+"3";  
        resolve(str)           
    },3000)
}).then(function(str){
    console.log("我成功获得了中奖第一个号码是:"+str);   
    return new Promise(function(resolve){
        setTimeout(function(){
            str = str+"5";
            resolve(str)
        },5000)
    })         
}).then(function(str){
    console.log("我成功获得了中奖第二个号码是:"+str);          
    setTimeout(function(){
        str = str+"6";
        console.log("我成功获得了中奖第三个号码是:"+str); 
    },1000)
}).catch(function(){
    console.log('失败了')
})
2,async/await
//es7 语法  async/await
async function fn(){
    //async 这是一个异步函数
    //await 后面是一个promise对象
    //await 只能在async函数里面
    //可以把异步写成同步代码
    //第一个号码
    var num1 = await new Promise(function(resolve){
        var str = "";
        setTimeout(function(){
            str = str+"3";  
            resolve(str)           
        },3000)
    });
    console.log(num1)
    var num2 = await new Promise(function(resolve){
        setTimeout(function(){
            resolve(num1+"7")
        },2000)
    });
    console.log(num2)
    var num3 = await new Promise(function(resolve){
        setTimeout(function(){
            resolve(num2+"9")
        },2000)
    })

    console.log(num3)
}
fn();