2015-08-28 90 views
1
function addItemToCart (id_1, id_2, id_3, id_etc) { 
    jQuery.ajax({ 

    }); 
} 

function clearCart() 
{ 
    jQuery.ajax({ 
    }); 
} 

function buyButton() 
{ 
    clearCart(); 
    setTimeout(function() 
    { 
     redirect to cart; 
     addItemToCart(283746 , 1, 1, "Months", "1294"); 
    }, 500); 
} 

我想让它不是使用setTimeout,而是等到clearCart()完成通过ajax的加载然后运行setTimeout中的函数,我似乎无法弄清楚这一点..我试图做一个回调,但我想说,这是不正确的..如何在第一个在javaScript中结束后运行第二个函数?

function FirstFunction(callBack) 
{ 
    clearCart(); 

    if (callback) 
    { 
     callback(); 
    }  
} 
function SecondFunction() 
{ 
    buyButton(); 
} 

FirstFunction(SecondFunction); 
+0

运行它在中,.done处理 – mplungjan

回答

7

如果你想运行一些代码,当一个Ajax响应到达,把它放在donesuccess处理函数。这是这些功能的用途。

不要猜测请求要花多长时间。

+1

您可以通过添加'.done(功能(数据){/ *你的函数* /})'你的Ajax调用后做。 – ArBro

+0

@ABr,我尝试了以下方法,但即使完成或成功,它也无法正常工作,http://pastebin.com/7yMahd0L我也尝试将它包括在ajax成功中,但没有运气。 – iBrazilian2

4

需要使用donesuccess回调以避免任何随机等待时间。如下图所示:

function clearCart() 
{ 
    return jQuery.ajax({ 
    }); 
} 

function buyButton() 
{ 
    clearCart().done(function() { 
     addItemToCart(283746 , 1, 1, "Months", "1294"); 
    }); 
} 
+0

这似乎没有工作,http://pastebin.com/7yMahd0L – iBrazilian2

+0

@ iBrazilian2在'clearCart()',你需要''返回''jQuery.ajax()'。 – thecodeparadox

相关问题