ECMAScript6 async
2016-05-11 16:08
148 查看
//async(异步的) 函数
//es7里提供的
//async 使得异步操作变得更加方便,它是generator函数的语法糖
var fs = require('fs');
function readFile(name){
return new Promise(function(resolve,reject){
fs.readFile(name,function(err,body){
if(err){
reject(err)
}
resolve(body);
})
})
}
//g 函数写法
function* generator(){
var f1=yield readFile('package.json');
console.log(f1.toString())
var f2=yield readFile('a.js');
console.log(f2.toString())
}
//async写法
//1 把*换成了async
//2 yield 换成了await
async function ac1(){
var f1=await readFile('package.json');
console.log(f1.toString())
var f2=await readFile('a.js');
console.log(f2.toString())
return f2;
}
//async的改进
//1 内置执行器,generator的执行需要有执行器,所以才有了co
//而async自带了执行器。它的执行和普通函数一样
var result=ac1();
//调用了ac1后它就会立即执行,输出最后结果
//2更好的适用性,await(等侯)后可以是Promise 和原始 类型的值
//数值,字符串,等。但这时等同于同步执行了。
//3 async 函数返回的是Promise对象,
//async函数完全可以看作多个异步操作,包装成的一个Promise对象,
//而await 命令就是内部then命令的语法糖
//正常情况下,await命令后面是一个Promise对象,否则会被转成Promise。
//async函数的实现就是将generator 函数和自动执行器,包装在一个函数里。
//then参数还可以获取return 的值
result.then(function(res){
console.log('----------------------------------ok')
console.log(res.toString());
})
//async返回promise所以可以用then
//当执行时,一旦遇到await 就会先返回,等到异步完成
//再接着执行后面语句。
//await 后的promise可能返回reject 所以最好把await 包在try内
//编译需要用 traceur --experimental async2.js
//async 使得异步操作变得更加方便,它是generator函数的语法糖
//es7里提供的
//async 使得异步操作变得更加方便,它是generator函数的语法糖
var fs = require('fs');
function readFile(name){
return new Promise(function(resolve,reject){
fs.readFile(name,function(err,body){
if(err){
reject(err)
}
resolve(body);
})
})
}
//g 函数写法
function* generator(){
var f1=yield readFile('package.json');
console.log(f1.toString())
var f2=yield readFile('a.js');
console.log(f2.toString())
}
//async写法
//1 把*换成了async
//2 yield 换成了await
async function ac1(){
var f1=await readFile('package.json');
console.log(f1.toString())
var f2=await readFile('a.js');
console.log(f2.toString())
return f2;
}
//async的改进
//1 内置执行器,generator的执行需要有执行器,所以才有了co
//而async自带了执行器。它的执行和普通函数一样
var result=ac1();
//调用了ac1后它就会立即执行,输出最后结果
//2更好的适用性,await(等侯)后可以是Promise 和原始 类型的值
//数值,字符串,等。但这时等同于同步执行了。
//3 async 函数返回的是Promise对象,
//async函数完全可以看作多个异步操作,包装成的一个Promise对象,
//而await 命令就是内部then命令的语法糖
//正常情况下,await命令后面是一个Promise对象,否则会被转成Promise。
//async函数的实现就是将generator 函数和自动执行器,包装在一个函数里。
//then参数还可以获取return 的值
result.then(function(res){
console.log('----------------------------------ok')
console.log(res.toString());
})
//async返回promise所以可以用then
//当执行时,一旦遇到await 就会先返回,等到异步完成
//再接着执行后面语句。
//await 后的promise可能返回reject 所以最好把await 包在try内
//编译需要用 traceur --experimental async2.js
//async 使得异步操作变得更加方便,它是generator函数的语法糖
相关文章推荐
- 无网或断网提示,自定义界面(UIView分类,使用方便)
- haproxy的 nosvr
- Linux inotify监听文件变化机制
- 关于MediaPlayer使用的一些积累
- C++的技术探究
- 懒加载——网页图片的加载技术
- bzoj 2708: [Violet 1]木偶
- 超级简单的maven安装配置教程
- NandFlash和iNand
- saltstack之(一)系统环境及本地yum源
- 模拟spring aop (利用java反射原理)
- sublime快捷键
- BitMap位图的设计
- easyui-datagrid控件保存选中项,每次打开页面上次被选中的行前面都被勾选
- FMX中实现PostMessage的方法
- 你所不知到的C++ 系列
- Wcf序列化的循环引用问题1
- Oracle、MySQL和SqlServe三种数据库分页查询语句的区别介绍
- 在Genymotion虚拟机上安装Google Apps
- Bundle Identifier,Bundle Version,Bundle Version Code区别