产品世界当前位置:菲娱2国际 > 产品世界 > >

菲娱国际注册:详谈nodejs异步编程(5)

  

  

代码如下:

  
  var p = Promise.resolve({x: 1});  
  p.then(function(val) {  
  console.log('first callback: ' + val.x++);  
  });  
  p.then(function(val) {  
  console.log('second callback: ' + val.x)  
  })  
  // first callback: 1  
  // second callback: 2  
  
  

  

1.5 Generator  

  

上面所有的方法均是基于回调函数来完成异步操作的,无非是对回调函数进行封装而已。ES6里面提出了Generator,增加了解决异步操作的途径,不再依据回调函数来完成。

  

  

Generator最大的特点就是可以实现函数的暂停、重启,这个特性非常有利于解决异步操作。将Generator的暂停与promise的异常处理结合起来,可以比较优雅地解决异步编程问题。具体实现参考:Kyle Simpson  

  

2. 异步编程存在的问题  

  

2.1 异常处理  

  

a) 异步事件包括两个环节:发出异步请求、结果处理,这两个环节通过event loop来连接起来。那么try catch来进行异常捕获的时候就需要分来捕获。

  

  

代码如下:

  
  try {  
  asyncEvent(callback);  
  } catch(err) {  
  ......

  
  }  
  

  

  

上述代码是无法捕获callback里面的异常,只能获取发出请求环节的异常。这样就存在问题:假如请求的发出和请求的处理是两个人完成的,那么在异常处理的时候就存在问题?

  

  

b)promise实现异常的传递,这带来一些好处,在实际项目中保证代码不被阻塞。但是如果异步事件比较多的时候,不容易找出到底是那个异步事件产生了异常。 (责任编辑:admin)

上一篇:菲娱国际平台:Bootstrap面板使用方法

下一篇:没有了

推荐内容

客户服务热线

010-400-12345

在线客服