async.js 626 B

1234567891011121314151617181920212223242526272829303132
  1. // jshint esnext:true
  2. var request = require('superagent')
  3. var chan = require('..')
  4. var co = require('co')
  5. var wait = require('co-wait')
  6. var urls = [
  7. 'http://google.com',
  8. 'http://medium.com',
  9. 'http://segment.io',
  10. 'http://cloudup.com',
  11. 'http://github.com'
  12. ]
  13. var ch = chan(3) // buffer size 3
  14. co(function *() {
  15. for (var i = 0, l = urls.length; i < l; i++) {
  16. yield ch.async(request.get, urls[i])
  17. console.log('Response added to channel for: ' + urls[i])
  18. }
  19. ch.close()
  20. })()
  21. co(function *() {
  22. while (!ch.done()) {
  23. yield ch
  24. yield wait(1000)
  25. console.log('Channel yielded')
  26. }
  27. })()