ES7的Async/Await

1 阅读前, 需对promise和ES6(ECMA2015)有所了解,会更容易理解
2 代码如下,运行代码时把start1(),start2(),start3()注释去掉
<!DOCTYPE html >
< html >
< head >
< meta charset= "UTF-8" >
< title >async </ title >
</ head >
< script type= "text/javascript" >
 
/**
async 表示这是一个async函数,await只能用在这个函数里面。
 
await 表示在这里等待promise返回结果了,再继续执行。
 
await 后面跟着的应该是一个promise对象(当然,其他返回值也没关系,只是会立即执行,不过那样就没有意义了…)
 
await等待的虽然是promise对象,但不必写.then(..),直接可以得到返回值。
*/
 
//=======================================================
 
var sleep = function ( time) {
return new Promise( function ( resolve, reject) {
setTimeout( function () {
     resolve( 'ok'); //await等待可以得到返回值
}, time);
})
};
 
var start1 = async function () {    
console. log( 'start');
let result = await sleep( 3000); //等待sleep执行完毕,才会继续执行
console. log( result);
console. log( 'end');
};
 
//start1();
 
 
//=======================================================
 
var ajax = function ( time) {
return new Promise( function ( resolve, reject) {
setTimeout( function () {
     reject( 'ajaxCancel'); //async会产生异常,在catch中获取值
}, time);
})
};
 
var start2 = async function () {    
     try{
     console. log( 'loading.....');
     let result = await ajax( 3000);
     console. log( result);
     console. log( 'ajaxEnd');
    } catch ( err) {
console. log( err); // 这里捕捉到错误 `error`
}
};
 
//start2();
 
 
 
//=======================================================
    
let datas = [ 1, 2, 3, 4, 5];
    
var receive = function ( time, index) {
return new Promise( function ( resolve, reject) {
setTimeout( function () {
     resolve( index);
}, time);
})
};
 
var start3 = async function () {    
     try{
     console. log( 'receiving.....');
    
     for( var v of datas) {
     console. log( `当前是第 ${ v } 次等待..`);
     let result = await receive( 1000, v);
     console. log( "receiv"+ result);
     }
    
     console. log( 'receiveEnd');
    
    } catch ( err) {
console. log( err); // 这里捕捉到错误 `error`
}
};
 
//start3();
 
 
//=======================================================
 
< / script >
< body >
</ body >
</ html >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值