我有一个应该在另一个之后运行的函数,例如:

function cutTomatoesAlone(Kg){
    // slice my stuff
}
function cookTomatoes(Minutes){
    // boil my stuff
}


我这样称呼他们:

cutTomatoesAlone(15) // 15kg, need 3 hours!
cookTomatoes(10); // need 10 minutes


但是cookTomatoes(10)在我的cutTomatoesAlone(15)之前完成。

如何先运行cutTomatoesAlone(15),完成后如何运行cookTomatoes(10)



编辑:cutTomatoesAlone()加载外部JSON。 cookTomatoes(10)继续努力。

最佳答案

Learn about promises and deferred objects。 jQuery中的每个Ajax函数都返回一个promise,因此您可以轻松地链接函数调用。

例如:

function cutTomatoesAlone(Kg) {
    return $.getJSON(...); // return the promise provided by $.getJSON
}

// called as
cutTomatoesAlone(15).then(function() { // attach callback
    cookTomatoes(10);
});


在进行Ajax调用的情况下,一旦成功检索到响应,就可以解决承诺。

07-24 18:14