Tengo una función que hace una solicitud GET ajax y, en función del valor devuelto, establece una variable JS global. Yo uso esta variable (isCalculateTax en el código de abajo) para su posterior procesamiento:Solicitud GET síncrona con Javascript/jQuery
var isCalculateTax;
function setCalculateTaxValue(taxStatementId) {
$.get('/taxstatements/calculatetax/' + taxStatementId, function (data) {
isCalculateTax = data.isCalculateTax;
});
}
$(document).ready(function() {
// initially check the tax statements dropdown to see which one is selected
// and set the isCalculateTax to the right value
var taxStatementId = $('#taxStatements').val();
setCalculateTaxValue(taxStatementId);
enumerateDocumentItems(isCalculateTax);
});
Mi problema es que cuando enumerateDocumentItems() es llamado y ejecutado el isCalculateTax aún no se actualiza desde el AJAX petición GET, por lo que recibo impredecible resultados.
¿Cómo puedo esperar la cantidad de tiempo necesaria antes de ejecutar enumerateDocumentItems() para que isCalculateTax sea correcto?
¿Qué sucede si en algunos lugares no queremos proporcionar enumerateDocumentItems como devolución de llamada? Si no queremos que se ejecute, ¿podemos pasar el nulo? ver mi comentario a @Jochem .. – mare
@mare - sí, este código verifica para asegurarse de que la devolución de llamada no sea nula antes de intentar llamarlo. Simplemente configure el valor en nulo: 'updateTaxValue (taxStatementId, null)'. – tvanfosson
Hay un error con su código: el segundo argumento para Function.prototype.apply debe ser una matriz [Break on this error] callback.apply (taxStatementId, data.isCalculateTax); – mare