Я делаю AJAX-вызов (обычный JS) и, если это займет, скажем, более 500 миллисекунд, я бы хотел выставить окно «Please Wait».
Обычно, еслиЯ хочу немедленно установить окно PW, я бы сделал:
// show semi-transparent grey screen to block access to everything underneath
divGreyCoverAllNode.style.display = 'inline';
// show PW box. Prior to these lines, both coverall and PW were display=none
divPleaseWaitNode.style.display = 'inline';
// now do the AJAX and follow-up inside a zero timer; the timer is necessary to
// make the system pause to display the screen changes we previously invoked
setTimeout( function() {
// do my ajax call here, then after the call...
// take down the PW stuff
divPleaseWaitNode.style.display = 'none';
divGreyCoverAllNode.style.display = 'none';
},
0
);
Как я уже говорил выше, я хотел бы, чтобы PW отображался только в том случае, если AJAX не заканчивается,скажем, 500 миллисекунд.В идеале это будет что-то вроде:
// set a timer to display PW in 500 milliseconds
myTimeEvent = setTimeout( function() {
divGreyCoverAllNode.style.display = 'inline';
divPleaseWaitNode.style.display = 'inline';
},
500
);
// do my ajax call here, then after the call...
clearTimeout(myTimeEvent);
// take down the PW stuff, in case it was displayed
divPleaseWaitNode.style.display = 'none';
divGreyCoverAllNode.style.display = 'none';
Но я не могу заставить систему приостановить работу и отобразить PW, когда AJAX тратит время.Я пытался окружить блок AJAX и последующего контроля с нулевым таймером, но без сделки.
Есть предложения?
РЕДАКТИРОВАТЬ: Важный факт: это не асинхронный вызов ajax.Это необычная ситуация, требующая все, чтобы ждать результата ajax.