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

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

  
  var img = document.querySelect(#id);  
  img.addEventListener('load', function() {  
  // 图片加载完成  
  ......

  
  });  
  img.addEventListener('error', function() {  
  // 出问题了  
  ......

  
  });  
  

  

  

  上述代码存在两个问题:  

  

a. img实际已经加载完成,此时才绑定load回调函数,结果回调不会执行,但依然希望执行该对应回调函数。

  

  

代码如下:

  
  var img = document.querySelect(#id);  
  function load() {  
  ...

  
  }  
  if(img.complete) {  
  load();  
  } else {  
  img.addEventListener('load', load);  
  }  
  img.addEventListener('error', function() {  
  // 出问题了  
  ......

  
  });  
  

  

  

   b. 无法很好处理存在异常  

  

结论:事件机制最适合处理同一个对象上反复发生的事情,不需要考虑当绑定回调函数之前事件发生的情况。

  

  

1.3 异步控制库  

  

目前的异步库主要有Q、when.js、win.js、RSVP.js等。

  

  

这些库的特点是代码是线性的,可以从上到下完成书写,符合自然习惯。

  

  

不好的地方也是风格各异,不便于阅读,增加学习成本。

  

  

1.4 Promise  

  

Promise翻译成中文为承诺,个人理解是异步完成之后,就会给外部一个结果(成功或失败),并承诺结果不再发生改变。换句话就是Promise反应了一个操作的最终返回结果值(A promise represents the eventual value returned from the single completion of an operation)。目前Promise已经引入到ES6规范里面,Chrome、firefox等高级浏览器已经在内部实现了该原生方法,使用起来相当方便。 (责任编辑:admin)

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

下一篇:没有了

推荐内容

客户服务热线

010-400-12345

在线客服