Ciao a tutti. Ho, quello che sembra essere, un problema banale. Ho il seguente JavaScript:jQuery: attendere il completamento della funzione per continuare l'elaborazione?
$(function() {
var r = GetResults();
for(var i = 0; i < r.length; i++) {
// Do stuff with r
}
});
function GetResults() {
$.getJSON("/controller/method/", null, function(data) {
return data;
});
}
A causa del fatto che sto chiamando un metodo in modo asincrono, lo script continua esecuzione e quando incontra il ciclo for, r
ovviamente non è intenzione di avere ancora un valore. La mia domanda è: quando ho un metodo che sta facendo un'operazione asincrona, e sono dipendente dai dati che ritorna nel blocco principale, come posso interrompere l'esecuzione fino a quando i dati non vengono restituiti? Qualcosa di simile:
var r = GetResults(param, function() {
});
dove la funzione è una funzione di richiamata. Non riesco a spostare l'elaborazione for loop nella funzione di callback della richiesta JSON perché sto riutilizzando la funzionalità di GetResults più volte in tutta la pagina, a meno che non voglia duplicare il codice. Qualche idea?
Grazie per la risposta. Il motivo per cui ho diviso GetResults è che sto riutilizzando quella funzionalità più volte in tutta la pagina. Dovrei modificare il mio post per affermarlo. – user135383
se è necessario eseguire la stessa elaborazione su dati provenienti da più posizioni, basta sostituire la funzione di callback con una funzione con nome e eseguire l'elaborazione lì. $ .getJSON ("/ controller/method /", null, processData (data)); function processData (d) {...} –