LOCAL OBJECT MODULE


  waitFor.load('MyObject', {
    property: 'foo',
    method: function(data){
      console.log(data);
    }
  })

  waitFor('MyObject').then(function(MyObject){
    if(MyObject.property == 'foo')
      MyObject.method('it works');
  });
      

LOCAL CLASS MODULE


  var MyClass = function(options){
    $.extend(this, options);
  };

  MyClass.prototype.getValue = function(key){
    return this[key];
  };

  waitFor.load('MyClass', MyClass);

  waitFor('MyClass').then(function(MyClass){
    var myClass = new MyClass({foo: 'bar'});

    myClass.getValue('foo');
  });
      

MULTIPLE DEPENDENCIES


  waitFor.load('MyObject', {foo: 'bar'});
  waitFor.load('MyClass', MyClass);

  waitFor('MyObject', 'MyClass').then(function(MyObject, MyClass){
    var myClass = new MyClass(MyObject);
  });
      
Or

  // #load can take an object of key-value pairs

  waitFor.load({
    'MyObject' : {foo: 'bar'},
    'MyClass'  : MyClass
  });

  // #waitFor can take individual arguments or an array

  var dependencies = ['MyObject', 'MyClass'];

  waitFor(dependencies).then(function(MyObject, MyClass){
    var myClass = new MyClass(MyObject);
  });
      

REMOTE LIBRARY


  waitFor.load('underscore', 'http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore-min.js', {
    exports: '_'
  });

  waitFor('underscore').then(function(_){
    print(_.identity('foo'));
  });
        

REMOTE DATA


  waitFor('weather').then(function(json){
      print(json);
  });

  waitFor.load('weather', 'http://api.openweathermap.org/data/2.5/weather?q=new%20york');
        
City:

MULTIPLE REMOTES


  waitFor.load('weather'    , 'http://api.openweathermap.org/data/2.5/weather?q=new%20york');
  waitFor.load('underscore' , 'http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore-min.js' , {
    exports: '_'
  });

  waitFor('underscore', 'weather').then(function(_, json){
    _.pick(json, 'main', 'wind');
  });
      
City:

JSONP


  waitFor.load('jsonp', 'http://jsfiddle.net/echo/jsonp/?foo=bar&bar=baz', {dataType: 'jsonp'});

  waitFor('jsonp').then(function(data){
    print(data);
  });
      

LOCALS AND REMOTES


  waitFor.load('weather'    , 'http://api.openweathermap.org/data/2.5/weather?q=new%20york');
  waitFor.load('underscore' , 'http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore-min.js' , {
    exports: '_'
  });
  waitFor.load('MyClass', function(options){
    $.extend(this, options);
  })

  waitFor('underscore', 'weather', 'MyClass').then(function(_, json, MyClass){
    var myClass = new MyClass(_.pick(json, 'main', 'wind'));
  });