Prosmise对像是es6的新特性,也是异步编程的解决方案。

?


1 2 3 4 5 6 7 8


var promise = new Promise(function (resolve , reject) {

        var result = axios.get('../data.json');

        if (result){

            resolve(result)

        }else {

            reject(new Error())

        }

    });


使用方法是 ​new Promise​ 对象,里面有两个参数,一个是​resolve​,一个是​reject​。resolve表示解决、成功,reject表示拒绝、失败。(axios是异步请求库,类似jq 的ajax)

调用:

?


1 2 3


promise.then(function (data) {

        console.log(data.data)

    })


​async​与​await​,是一对好机油,配合一起使用。功能类似Generator 函数 (*),但是更语义化,使用方法:

?


1 2 3 4 5 6 7 8 9 10 11 12 13


function resolveAfter2Seconds(x) {

  return new Promise(resolve => {

    setTimeout(() => {

      resolve(x);

    }, 2000);

  });

}

  async function f1() {

  var x = await resolveAfter2Seconds(10);

  console.log(x); // 10

}

f1();


将异步转为同步,如果去掉 ​async 、await​,结果会是​undefined。