我有这个函数,我的代码的很多部分都称之为。
function test() {
$.ajax({
url : url,
type : 'GET',
success : {
verifyID();
verifyName();
verifyBlah();
}
});
}
我有另外一个功能:
addProductCart(productID);
在我调用addProductCart()
之前,我需要调用测试函数,但是,其他进程调用测试函数。
我想这样做:
test() ---> if test ok (success) ----> addProductCart()
但我无法将我的函数(addProductCart)设置为成功测试函数,因为正如我所说,许多其他进程调用测试函数。
我该怎么做?
答案 0 :(得分:6)
使用Promises!
从test
函数返回一个承诺:
function test() {
return $.ajax({ // <----- Notice the return statement here
url : url,
type : 'GET',
success : {
verifyID();
verifyName();
verifyBlah();
}
});
}
当您需要使用此函数测试某些内容并执行另一段代码时,您可以执行以下操作:
test().then(function(data, textStatus){
//do thing 1
addProductCart()
// you can use data or textStatus returned by your ajax function here too!
});
test(someParam).then(function(data, textStatus){ // <--- You can even pass parameters to test function like here, and make it do different ajax call based on your param
//do thing 2
});
有关其工作原理的详细信息,请参阅jQuery docs for $.ajax。功能
这里有一个很棒的tutorial概念的JavaScript承诺,如果您不熟悉它,可以帮助您入门。