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。