Tengo esta función donde muchas partes de mi código la llaman.
function test() { $.ajax({ url : url, type : 'GET', success : { verifyID(); verifyName(); verifyBlah(); } }); }y tengo esta otra función:
addProductCart(productID); Antes de llamar a addProductCart() , necesito llamar a la función de prueba, pero otros procesos llaman a la función de prueba.
Me gustaría hacer esto:
test() ---> if test ok (success) ----> addProductCart()Pero no puedo configurar mi función (addProductCart) en la función de prueba de éxito porque, como dije, muchos otros procesos llaman a la función de prueba.
¿Cómo puedo hacer esto?
¡Usa Promesas!
Devuelve una promesa de la función de test así:
function test() { return $.ajax({ // <----- Notice the return statement here url : url, type : 'GET', success : { verifyID(); verifyName(); verifyBlah(); } }); }Cuando necesite usar esta función para probar algo y ejecutar otra pieza de código cuando esto pase, puede hacer:
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 });Para obtener más detalles sobre cómo funciona esto, consulte los documentos de jQuery para $.ajax . función
Aquí hay un excelente tutorial sobre el concepto de Promesas de JavaScript para que pueda comenzar si no está familiarizado con ellas.