diff options
Diffstat (limited to 'js')
-rw-r--r-- | js/reveal.js | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/js/reveal.js b/js/reveal.js index 1ef10aa..51b1ed0 100644 --- a/js/reveal.js +++ b/js/reveal.js @@ -539,29 +539,34 @@ var pluginsToInitialize = Object.keys( plugins ).length; + var afterPlugInitialized = function() { + if( --pluginsToInitialize === 0 ) { + loadAsyncDependencies(); + } + }; + for( var i in plugins ) { var plugin = plugins[i]; - // If the plugin has an 'init' method, initialize and - // wait for the callback + // If the plugin has an 'init' method, invoke it if( typeof plugin.init === 'function' ) { - plugin.init().then( function() { - if( --pluginsToInitialize === 0 ) { - loadAsyncDependencies(); - } - } ); + var callback = plugin.init(); + + // If the plugin returned a Promise, wait for it + if( callback && typeof callback.then === 'function' ) { + callback.then( afterPlugInitialized ); + } + else { + afterPlugInitialized(); + } } else { - pluginsToInitialize -= 1; + afterPlugInitialized(); } } - if( pluginsToInitialize === 0 ) { - loadAsyncDependencies(); - } - } /** |