Come faccio ad avere il browser per aggiornamento prima del mio prossimo funzione Javascript si chiama?
-
25-09-2019 - |
Domanda
Sto avendo un po 'di difficoltà a raggiungere la funzionalità desiderata dalla mia funzione ... In sostanza, sto facendo due chiamate alle funzioni AJAX (come previsto da Oracle APEX, quindi non posso cambiare questi), ma' ri lento. Mi piacerebbe mostrare la gif AJAXy filatura standard, mentre l'azione era in corso, ma non sto avendo molta fortuna. Ecco quello che ho finora:
function paginate(reportIDs, startRecord)
{
//block access to the UI and show a "please wait" message
$.blockUI({ css: {
border: 'none',
padding: '15px',
backgroundColor: '#000',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
opacity: .5,
color: '#fff'
} });
//make the two AJAX calls to the APEX provided function
for(var i = 0;i<reportIDs.length;i++)
{
$a_report(reportIDs[i], startRecord, ITEMS_PER_PAGE, ITEMS_PER_PAGE);
}
//clean up some APEX garbage on the page
formatPage();
//make the "please wait" message go away
$.unblockUI;
}
Il problema specifico che sto avendo in questo momento è che il blocco dell'interfaccia utente sembra accadere solo una volta le chiamate AJAX sono completi. Allora mai sblocca ... Tutte le idee?
Soluzione
Avvolgere il tuo Ajax in un altro metodo e il ritardo che il metodo da 1 ms
function paginate(reportIDs, startRecord)
{
//block access to the UI and show a "please wait" message
$.blockUI({ css: {
border: 'none',
padding: '15px',
backgroundColor: '#000',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
opacity: .5,
color: '#fff'
}
});
setTimeout(function(){
//make the two AJAX calls to the APEX provided function
for(var i = 0;i<reportIDs.length;i++)
{
$a_report(reportIDs[i], startRecord, ITEMS_PER_PAGE, ITEMS_PER_PAGE);
}
//clean up some APEX garbage on the page
formatPage();
//make the "please wait" message go away
$.unblockUI();
}, 1);
}
Altri suggerimenti
Supponendo le chiamate sono async
- si può passare un callback per la funzione di report ajax o utilizzare un'altra funzione o costante per impostare una richiamata? In caso contrario, youll devono sondaggio per la risposta - come si dovrebbe fare questo dipenderà da che cosa è tornato da $a_report
e / o l'API dietro la loro funzionalità Ajax.
Se arent async
allora può essere un errore di battitura o qualcosa del genere. Come l'altro poster suggerire $.blockUI;
dovrebbe probabilmente essere $.blockUI();