Today I went a little deeper into JavaScript! The problem I was facing was:
“How do I call a function and provide the arguments as an array instead of a comma separated list?”
My arguments were not know until runtime and there could be 0 to 4 arguments.
Function.prototype.apply() to the rescue
The apply() method lets you invoke a function with arguments as an array.
Here I am making a service call to stopStreaming for every vehicle in my array.  This service call returns a promise that I push into an array.  I can then use $.when.apply(this, promises).always() to wait for all the calls to return before I resolve my deferred.
Here is the full code.
vm.stopAll = function () {
  var deferred = $.Deferred();
  var promises = [];
  for (var i = 0; i < streamingVehicles.selectedVehicles.length; i++) {
     var vehicle = streamingVehicles.selectedVehicles[i];
     var promise = stopStreaming(vehicle);
     promises.push(promise);
  }
  $.when.apply(this, promises).always(function() {
     deferred.resolve();
  });
  return deferred.promise();
};
Incidentally, this is also a nice demonstration of using the promise pattern and the jQuery Deferred object.