So che posso usare una variabile esterna per identificare lo stato con cui la funzione esterna deve fare. Ma considera questo: se la funzione interiore è asincrona? La funzione esterna non aspetterà che la variabile della funzione interna cambierà, quindi come posso restituire la funzione esterna adesso?JavaScript: come restituire una funzione esterna all'interno di una funzione interna asincrona?
function outer() {
var flag = true;
// For example, a jquery-like ajax call
$.ajax({
// Some settings
error: function(jqXHR, textStatus, errorThrown) {
// Here I want to return outer()
flag = false;
}
});
return flag;
}
Quindi, come si può vedere, se uso flag
come valore di ritorno, outer()
sarà molto probabilmente di ritorno vero, perché la chiamata AJAX può richiedere molto tempo. E per lo stesso motivo, non voglio impostare async: false
perché ciò fermerà la reazione della pagina.
Non è possibile con flussi asincroni, suggerirei di aggiungere un metodo callback come parametro a 'outer (cb)' che si chiama quando la richiesta ajax è completa. – olsn
Sì hai ragione, stavo pensando male. – Melkor