我有一个返回值的jQuery函数/插件,但是在返回之前有一个函数被调用,需要在返回之前完成,否则返回的值不正确。
如果我将返回行放在function1()。done中,它似乎根本不返回任何内容。如果我把它放在外面,它会在function1完成之前返回。
下面不是真正的代码,但我使用这个例子来表达我的问题。希望它有意义。
$(function(){
function1().done(function(){
console.log('function1 is done!');
return "this value needs to be returned only after function1 above is finished";
});
});
function function1(){
var dfrd1 = $.Deferred();
var dfrd2= $.Deferred();
setTimeout(function(){
// doing async stuff
console.log('task 1 in function1 is done!');
dfrd1.resolve();
}, 1000);
setTimeout(function(){
// doing more async stuff
console.log('task 2 in function1 is done!');
dfrd2.resolve();
}, 750);
return $.when(dfrd1, dfrd2).done(function(){
console.log('both tasks in function1 are done');
// Both asyncs tasks are done
}).promise();
}