js编程时经常会用到异步处理,而异步会带了所谓的并发问题。比如,你需要向服务器发出多个ajax请求,然后在返回所有结果后做进一步处理,同时要显示动画。因此我们需要用到以下的方案。
###【定义函数】
定义Batch函数。参数为函数组成的数组functions,这里面的函数将稍后执行,以及这些函数完成后的回调completionHandler。
1 | function Batch(functions, completionHandler) { |
###【启动请求】
用this._remaining来记录未执行的函数量,然后执行各个函数。
1 | Batch.prototype.execute = function execute() { |
###【让Batch知道函数完成】
用this._results来记录执行结果,当this._remaining为0时,表示所有函数已执行完毕。
1 | Batch.prototype.done = function done(result) { |
到这里,就完成了Batch这个函数的简单功能了。
###【使用】
将Batch应用到实际上。
1 | var urls = [ |
这样的方案其实是参考了“观察者”模式。相关源码推荐nodeJs的Async.js库。
THE END.
- 本文作者: GHOSTLaycoo
- 本文链接: http://example.com/2013/10/06/handling-asynchronous-js/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!