define(['apiReady', 'whenAll'], function (apiReady, whenAll) { return function ($elements, name) { var result = []; var d = $.Deferred(); var p = $elements.map(function () { var $element = $(this); return apiReady($element, name).then(function (api) { result.push({ api: api, $element: $element }); }); }); whenAll(p).then(function () { d.resolve(result); }); return d; }; });