/** * Licensed Materials - Property of IBM * IBM Watson Analytics (C) Copyright IBM Corp. 2014, 2016, 2017 * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ if (typeof define !== 'function') { var define = require('amdefine')(module); // jshint ignore:line } define(['bluebird', 'require'], function(Promise, require) { return { /** * Custom require function to use; * setting to null, will use the global require * @type {Function} */ require: null, // // Loads modules using Promise API rather than callbacks // // Usage: // AMD.loadModules(['a/b/c', 'd/e/f']) // .spread(function(C, F) { ... }); // Notes: // - Use of promises can introduce a small performance overhead; // - Should not use this for perf-critical operations. // loadModules: function(modules) { var promises = []; var deferreds = []; modules.forEach(function() { var dfd = {}; var promise = new Promise(function(resolve, reject) { dfd.resolve = resolve; dfd.reject = reject; }); deferreds.push(dfd); promises.push(promise); }); require = this.require || require; require(modules, function() { for (var i = 0; i < arguments.length; i++) { deferreds[i].resolve(arguments[i]); } }, function(err) { deferreds[0].reject(err); }); return Promise.all(promises); } }; });