ES6类
_
数据类型:
number、string、boolean、Object、undefined、function
用typeof检测出来数据类型:
symbol
new Number(12)
new String()
new Array()
symbol 使用情况一般
定义:
let syml = Symbol(‘aaa’);
注意:
1. Symbol 不能new
2. Symbol() 返回是一个唯一值
坊间传说, 做一个key,定义一些唯一或者私有一些东
3. symbol是一个单独数据类型,就叫 symbol, 基本类型
4. 如果symbol作为key,用for in循环,出不来
json -> for in
箭头函数
() =>{}
generator函数
生成器
解决异步深度嵌套的问题, async
语法:
function * show(){
yield
}
function* show(){
}
function *show(){
}
定义:
function * gen(){
yield 'welcome';
yield 'to';
return '牧码人';
}
调用:
let g1 = gen();
g1.next(); // {value:'welcome', done:false}
g1.next(); // {value:'to', done:false}
g1.next(); // {value:'牧码人', done:true}
上述调用,手动调用,麻烦
for .. of 自动遍历 generator
return的东西,它不会遍历
generator不仅可以配合 for … of …
还可以:
- 解构赋值:
let [a, …b] = gen(); 扩展运算符
‘…’console.log(…gen());
- Array.from()
console.log(Array.from(gen()));
generator结合 axios数据请求:
异步: 不连续,上一个操作没有执行完,下一个操作照样开始
同步: 连续执行,上一个操作没有执行完,下一个没法开始
关于异步,解决方案:
a). 回调函数
b). 事件监听
c). 发布/订阅
d). Promise对象
co….
ES2017,规定 async
nodeJs
读取文件 fs.readFile
1. promise
2. genrator
3. async
async function fn(){ //表示异步,这个函数里面有异步任务
let result = await xxx //表示后面结果需要等待
}
async特点:
1. await只能放到async函数中
2. 相比genrator语义化更强
3. await后面可以是promise对象,也可以数字、字符串、布尔
4. async函数返回是一个promise对象
5. 只要await语句后面Promise状态变成 reject, 那么整个async函数会中断执行
如何解决async函数中抛出错误,影响后续代码:
a).
try{
}catch(e){
}
b). promise本身catch
个人建议大家:
try{
let f1 = await readFile('data/a.txt');
let f3 = await readFile('data/c.txt');
let f2 = await readFile('data/b.txt');
}catch(e) {}