https://github.com/Gozala/reducers
Raw File
Tip revision: fc0627cda4f3fafad3b8b212ce7912c53771e78e authored by Irakli Gozalishvili on 22 January 2013, 17:02:00 UTC
Add IE10 into test matrix.
Tip revision: fc0627c
delay.js
"use strict";

var reducible = require("reducible/reducible")
var reduce = require("reducible/reduce")
var isReduced = require("reducible/is-reduced")
var end = require("reducible/end")

function delay(source, ms) {
  ms = ms || 6 // Minimum 6ms, as on less dispatch order becomes unreliable
  return reducible(function reduceDelayed(next, result) {
    var timeout = 0
    var ended = false
    reduce(source, function reduceDelaySource(value) {
      setTimeout(function delayed() {
        if (!ended) {
          timeout = timeout - ms
          result = next(value, result)
          if (isReduced(result)) {
            ended = true
            next(end)
          }
        }
      }, timeout = timeout + ms)
      return result
    })
  })
}

module.exports = delay
back to top