Return deferred promise object and resolve it

deferred, javascript, jquery

Solution

If in case group_id is currently selected and you have group members you just need to return resolved deferrent. Callback done() will be called right away, no need to check return type. Something like this:

$.get_members = function() {
  var group_id = $('#gid').val();
  var deferr = $.Deferred();
  if($(this).val() == group_id) {
    deferr.resolve();
  }
  else {
    $.get(url)
        .done(function() {
            ...
            deferr.resolve();
        }); 
  }

  return deferr.promise();
}

Problem

I have a function in form: ``` $.get_members = function() { var group_id = $('#gid').val(); if($(this).val() == group_id) return; var deferr = $.Deferred(); $.get(url) .done(function() { ... deferr.resolve(); }); return deferr.promise(); } ``` And now the question is: how to handle situation, when `group_id == $(this).val()`? I would like to do just: ``` var members_deferr = $.get_members(); members_deferr.done(function() { ... }); ``` One idea is to check type of returned value, but its not very nice. Second idea is to resolve deferred in `setTimeout`, but I don't know if it is safe. Any other ideas?

Original source