Promise与异步

Promise

有三种状态:pending(准备进行中),resolved(完成),rejected(失败)

语法

     var p=new Promise(function(resolve,reject){
        var i=3;
        if(i>2){
            resolve();
        }else{
            reject();
        }
    })
    p.then(function(){

    },function(){

    });

Promise 中状态只能执行一次

在Promise中resolve和reject,只能被调用一次,不能同时调用
在Promise中只有一个状态,准备状态pending
当执行resolve或者reject时,这个Promise当中状态就会被修改
如果当前状态不是准备状态pending时,就不会再执行resolve或者reject
then中的第一个函数,是Promise里面执行了resolve方法

    p.then(function(num){
        console.l(num);
    })

catch中的函数,是Promise里面执行reject方法

    p.catch(function(num){
        console.log(num);
    })

Promise.resolve() 返回一个Promise对象,状态为resolved

Promise.reject() 返回一个Promise对象,状态为rejected

Promise.prototype.then()

Promise.prototype.catch()

Promise.all();
将Promise对象数组按照顺序异步全部完成后再then的第一个函数中,传入完成结果

Promise.race()
将Promise 对象数组中最先执行完成的内容通过后面then传入

catch():发生错误的回调函数

异步

async异步操作返回一个Promise对象可以使用then链式调用

async function fn(){
        var a=123;
        return a;
    }
    var p=fn();
    console.log(p);//Promise {<resolved>: 123}
    p.then(function(list){
        console.log(list);
    })  //123

async是异步操作,而await就是等待一个异步任务完成的结果。简单的说await是一个操作符,async是异步的方法。

await只能用在async中


版权声明:本文为qq_44957616原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。