您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
ES6_async函数详解及应用_01
发布时间:2019-11-11 12:41:43编辑:雪饮阅读()
await
async的await可以让下个操作必须等待上个操作完成,如:
//这里foo函数做为被别人利用的对象,当使用者就在async函数体中时则foo函数的async修饰可要可不要
async function foo(){
//es6中形参只有一个可以忽略括号
return new Promise(resolve=>{
//resolve虽然是形参,但其实在promise内部也相当于已经声明名了以此形参名命名的函数,所以setTimeout可以直接这样用
setTimeout(resolve,2000);
});
}
async function test(){
console.log('开始执行',new Date().toTimeString());
await foo();
console.log('执行完毕',new Date().toTimeString());
}
test();
await返回值
普通函数返回值就直接是该普通函数里return决定
function foo(){
return 'dmj';
}
async function test(){
let res=await foo();
console.log(res);
}
test();
promise的resolve返回值则是undefined
async function test(){
//es6中promise对象的快捷方式,相当于创建了promise对象并立即执行了resolve
let res=await Promise.resolve();
console.log(res);
}
test();
但带参的resolve又是不同的
async function test(){
let res=await Promise.resolve('Promise');
console.log(res);
}
test();
但带参的resject则会报错
async function test(){
let res=await Promise.reject('失败了');
console.log(res);
}
test();
async应用实例:
那么用async实现上篇generator的需求实例就会更美妙,可以说async是generator的语法糖
//这里的async修饰也是可要可不要
async function get(url){
return new Promise((resolve,reject)=>{
$.ajax({
method:'GET',
//es6新特性 当对象名与变量名相同时可以不写,利用该特性,某人可以一逗到底
url,
//es6 新特性 箭头函数 参数只有一个不用小括号,函数体只有一个语句,可以不用花括号
success:data=>resolve(JSON.parse(data)),
error:error=>reject()
});
});
}
async function myAsync(){
let res=await get('cs.php');
console.log('request 1',res);
let res2=await get('cs.php?id='+res[0].id);
console.log('request 2',res2);
}
myAsync();
关键字词:async,es6
下一篇:CI中的视图