异步编程

由于js是单线程的,因此需要异步执行,最常见简单的就是setTimeout(),但他的缺点在于你不知道具体执行时间是多少,所以用这个是很不精确的。
然后就是事件监听例如a.on(‘event’, b) (jquery),这里a的event事件执行时,执行b,这样也就是异步执行。
其次就是订阅/发布,.subscribe(“done”, f2) (jquery);与事件监听相似,但是比事件监听更好,他能对数量进行更好的控制。
下面就是目前用的比较多的就是ES6的promise对象,

1
2
3
4
5
6
7
8
9
var promise = new Promise(function(resolve, reject) {
if (....) {
//异步成功执行
resolve();
} else {
reject(); //异步执行失败
}
});
promise.then().catch(err); //执行后续动作

在项目之中,经常会用它来封装函数,例如:
`bash
function a() {
return new Promise(resolve, reject) { ….. //后续操作
}}
还有Generator和async异步操作,他们俩用法差不多,但是和其他异步方式有一些不同:

  • generator是在function后面加上一个 * ,在要处理的过程前面加上一个 yield
  • async是在function前面加上一个async,把generator中的yield换成await。
坚持原创技术分享,您的支持将鼓励我继续创作!