title: Understanding Javascript Promises - Just want explanation
body: <p>Here is what I'm trying to do. I need to do some pre-processing on a JSON object.  In order to do so, I need to loop through each element, do a promise for a new person if there is no id for that person, and then update that element in the list.</p>
  
  <p>Example:</p>
  
  <pre><code>participant:[{
      person:{
          firstName: 'john'
          lastName: 'Doe'
      },
      role: 'Plumber'
  }, {
      person: '12345a9j09kf23f3'
      role: 'Window Washer'
  }]
  </code></pre>
  
  <p>The first element doesn't have a person id, so I'm going to create a promise, create the person in the database and then update that element and replace 'John Doe' with a personId. The second element already has an id and doesn't need to go to the database to create a new person.</p>
  
  <p>This code works as is. The problem is that I am trying to do a for loop and I need a synchrounous promise. I am in trouble. How can I use a loop and have a promise called or conditionally not handle a promise and the logic work synchronously?</p>
  
  <pre><code>Box.create(box)
  .then(function(data) {
    _.forEach(participants, function (participant) {
        //This promise will be executed asynchronously, possible to make it synchronous with the for loop?
        if (typeof participant.person != 'undefined' &amp;&amp; typeof participant.person.firstName != 'undefined') {
           Person.create(participant.person).then(function (data) {
              return Participant.create({}).then(function(data){
                newParticipants.push(data);
              })
            });
        } else {
          participants.push(participant);
        }
    });
    return Q(undefined);
  }).then(function(){
   // more logic
  </code></pre>