我希望执行顺序如下。 1. unattach(x) 2. updateLists(y) 3. console.log("已完成功能更新执行")
只有在两个函数(unattach和updateLists)都已完成执行后,才会返回更新函数。问题是我无法让它等待两个函数完成执行。返回声明中有什么问题吗?
function main()
{
when(update).then(function(){
console.log("completed execution of function update");
});
}
function update()
{
return when(function(){
unattach(x);
}).then(function(){
updateLists(y);
});
}
答案 0 :(得分:1)
我会使用回调来重写它。无论如何,你应该写更多的代码。
function main() {
update(function(){
console.log("completed execution of function update");
});
}
function update(callback){
unattach(x, function(){
updateLists(y, function(){
if(callback){
callback();
}
});
});
}
假设函数unattach和updateLists中有两个AJAX调用,你可以这样做:
function unattach(x, callback){
// if JQuery
$.ajax({
....
success: function(){
if(callback){
callback();
}
}
});
}
以同样的方式定义updateLists,以便在AJAX完成其工作时调用回调函数。