You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
599 B
34 lines
599 B
var defer = require('./defer.js'); |
|
|
|
// API |
|
module.exports = async; |
|
|
|
/** |
|
* Runs provided callback asynchronously |
|
* even if callback itself is not |
|
* |
|
* @param {function} callback - callback to invoke |
|
* @returns {function} - augmented callback |
|
*/ |
|
function async(callback) |
|
{ |
|
var isAsync = false; |
|
|
|
// check if async happened |
|
defer(function() { isAsync = true; }); |
|
|
|
return function async_callback(err, result) |
|
{ |
|
if (isAsync) |
|
{ |
|
callback(err, result); |
|
} |
|
else |
|
{ |
|
defer(function nextTick_callback() |
|
{ |
|
callback(err, result); |
|
}); |
|
} |
|
}; |
|
}
|
|
|