12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /**
- * 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);
- }
- };
- });
|