index.js 555 B

12345678910111213141516171819202122232425
  1. 'use strict';
  2. var once = require('once');
  3. /**
  4. * Run a function asynchronously or synchronously
  5. * @param {Function} func Function to run
  6. * @param {Function} cb Callback function passed the `func` returned value
  7. * @...rest {Mixed} rest Arguments to pass to `func`
  8. * @return {Null}
  9. */
  10. module.exports = function (func, cb) {
  11. var async = false;
  12. var answer = func.apply({
  13. async: function () {
  14. async = true;
  15. return once(cb);
  16. }
  17. }, Array.prototype.slice.call(arguments, 2) );
  18. if (!async) {
  19. cb(answer);
  20. }
  21. };