diff --git a/src/js/helpers/delay.js b/src/js/helpers/delay.js new file mode 100644 index 0000000..c844bae --- /dev/null +++ b/src/js/helpers/delay.js @@ -0,0 +1,11 @@ +var $ = require('jquery'); + +module.exports = function (time) { + var deferred = $.Deferred(); + + setTimeout(function () { + deferred.resolve(); + }, time); + + return deferred.promise(); +}; diff --git a/src/js/monkey.js b/src/js/monkey.js index 0f7df55..d109f71 100644 --- a/src/js/monkey.js +++ b/src/js/monkey.js @@ -16,6 +16,7 @@ window.Monkey = module.exports = (function () { icons: $monkeyContainer.data('icons'), // Display character icons under letters? true, false monkeyType: 'auto', // auto, desktop, mobile animateName: true, + minDelay: 0, server: 'https://secure.lostmy.name/widgets/actuallymonkey.json?callback=?', @@ -33,7 +34,7 @@ window.Monkey = module.exports = (function () { this.$events = $({}); - var promise = Monkey._getData(options) + var promise = $.when(Monkey._getData(options), Monkey.helpers.delay(options.minDelay)) .then(Monkey._calculateMonkey(options.monkeyType)) .then(Monkey._generateUrls(options.preload)) .then(Monkey._generateHtml(options.lang)) @@ -75,6 +76,7 @@ window.Monkey = module.exports = (function () { Monkey.helpers = {}; Monkey.helpers.Monkey = Monkey; + Monkey.helpers.delay = require('./helpers/delay'); Monkey.helpers.handleReplace = require('./helpers/handleReplace'); Monkey.helpers.isMobile = require('./helpers/isMobile'); Monkey.helpers.preload = require('./helpers/preload'); diff --git a/test/helpers.spec.js b/test/helpers.spec.js index 0af5ca1..2c39e33 100644 --- a/test/helpers.spec.js +++ b/test/helpers.spec.js @@ -61,4 +61,13 @@ describe('Monkey helpers', function () { cb(); }); }); + + it('should have a delay helper', function () { + var time = Date.now(); + + return helpers.delay(40) + .then(function () { + (Date.now() - time).should.be.within(39, 45); + }); + }); });