我有一个形式的功能:
$.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();
}
现在的问题是:
group_id == $(this).val()
时如何处理情况?我只想做:var members_deferr = $.get_members();
members_deferr.done(function() {
...
});
一种想法是检查返回值的类型,但这不是很好。第二个想法是解决
setTimeout
中延迟的问题,但我不知道它是否安全。还有其他想法吗?
最佳答案
如果当前选择了group_id并且您有组成员,则只需返回已解决的延迟。回调done()将立即被调用,无需检查返回类型。像这样:
$.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();
}