ES6-calss 以及理解原型链

Class

在ES6中,引入了Class,可以很方便的来定义类。例如

1
2
3
4
5
6
7
8
9
class A {
constructor(x,y){
this.x=x;
this.y=y;
}
toString(){
return this.x+this.y;
}
}

事实上ES6的class只是一个语法糖。上述代码等同于:

1
2
3
4
5
6
7
function AA(x,y){
this.x=x;
this.y=y;
}
AA.prototype.toString=function(){
return this.x+this.y;
}

所以 在实例化后

在koa1.0中使用mongoose的Promise

在mongoose使用Promise

mongoose的Promise使用起来还是很方便的只要在查询语句后面根成exec()方法即可。

例如

1
db.User.findOne({}).exec()

这时候返回的即是一个Promise对象。

在koa中使用Promise

只需在promise前面加上 yield 即可获取promise reslove时候的结果,如果需要捕获promise reject结果需要把整个语句放入try-catch

例如

generator-promise

generator 函数和 promise 对象的结合使用

当使用generator函数进行“流程管理”或使用koajs时候,往往需要使用异步操作。

ES6-Map

ES6引入Map的目的

js 的对象本质上就是键值对集合也就是 Hash结构,但是只能用字符串作为键值,而 Map 就可以解决这个问题。

用法

1
2
3
4
5
6
7
8
9
10
11
12

var m= new Map();
var o={
a:1
};

m.set(o,"123");
m.get(o); // "123"

m.has(o); // true
m.delete(o); // true
m.has(o); // false

Set数据结构

Set

基本用法

Set 是ES6 新的数据结构,类似于数组,但每一项都是唯一的没有重复项。

ES6 Generator 函数

简介

Genertor 函数是ES6提供的一种异步编程解决方法,从语法上,首先从语法上可以理解成一个成一个状态机,封装了多个内部状态。

执行 Generertor 函数会返回一个遍历器对象。也就是说, Generator 函数处理是状态机,还是一个遍历器对象生成函数。返回的遍历器对象,一次遍历Generator函数内部每一个状态。

ES6 promise 对象

含义

  • 状态

    promise 对象代表一个异步操作,有三种状态:

    • Pending 进行中
    • Resolved 已完成 (又称Fulfilled)
    • Rejected 失败
  • 特点
    一旦状态改变就不会在改变。

目的

解决回调写法的混乱以及一个统一标准。

以下文字至“用法”前来源于 原文连接

假设有一个数据库保存操作,一次请求需要在三个表中保存三次数据。那么我们的代码就跟上面的代码相似了。这时候假设在第二个db.save出了问题怎么办?基于这个考虑,我们又需要在每一层回调中使用类似try…catch这样的逻辑。这个就是万恶的来源,也是node刚开始广为诟病的一点。

1
2
3
4
5
6
7
8
9
10
db.save(data, function(data){
// do something...
db.save(data1, function(data){
// do something...
db.save(data2, function(data){
// do something...
done(data3); // 返回数据
})
});
});

另外一个缺点就是,假设我们的三次保存之间并没有前后依赖关系,我们仍然需要等待前面的函数执行完毕, 才能执行下一步,而无法三个保存并行,之后返回一个三个保存过后需要的结果。(或者说实现起来需要技巧)

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×