index.js 573 B

12345678910111213141516171819202122232425262728293031323334
  1. module.exports = function series(fns, context, callback) {
  2. if (!callback) {
  3. if (typeof context === 'function') {
  4. callback = context
  5. context = null
  6. } else {
  7. callback = noop
  8. }
  9. }
  10. if (!(fns && fns.length)) return callback();
  11. fns = fns.slice(0)
  12. var call = context
  13. ? function () {
  14. fns.length
  15. ? fns.shift().call(context, next)
  16. : callback()
  17. }
  18. : function () {
  19. fns.length
  20. ? fns.shift()(next)
  21. : callback()
  22. }
  23. call()
  24. function next(err) {
  25. err ? callback(err) : call()
  26. }
  27. }
  28. function noop() {}