38 lines
836 B
JavaScript
38 lines
836 B
JavaScript
var co = require('co')
|
|
|
|
exports = module.exports = deferImmediate
|
|
exports.defer =
|
|
exports.immediate =
|
|
exports.setImmediate = deferImmediate
|
|
|
|
function createCallback(ctx, gen, cb) {
|
|
return function () {
|
|
cb = cb || error
|
|
co.call(ctx, gen).then(function () {
|
|
cb()
|
|
}, cb)
|
|
}
|
|
}
|
|
|
|
function deferImmediate(gen, cb) {
|
|
return setImmediate(createCallback(this, gen, cb))
|
|
}
|
|
|
|
exports.nextTick = function deferNextTick(gen, cb) {
|
|
return process.nextTick(createCallback(this, gen, cb))
|
|
}
|
|
|
|
exports.timeout =
|
|
exports.setTimeout = function deferTimeout(gen, timeout, cb) {
|
|
return setTimeout(createCallback(this, gen, cb), timeout)
|
|
}
|
|
|
|
exports.interval =
|
|
exports.setInterval = function deferInterval(gen, timeout, cb) {
|
|
return setInterval(createCallback(this, gen, cb), timeout)
|
|
}
|
|
|
|
function error(err) {
|
|
if (err) throw err
|
|
}
|