用javascript实现sleep一直是个难题。
我在处理openwindow的时候不得以必须要sleep,最后算是想到个办法去处理,用ajax的同步调用方式。
function createXMLHttpRequest() { var request = false; if(window.XMLHttpRequest) { request = new XMLHttpRequest(); } else if(window.ActiveXObject) { var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP']; for(var i=0; i<versions.length; i++) { try { request = new ActiveXObject(versions[i]); if(request) { return request; } } catch(e) {} } } return request; }
pcAjax = createXMLHttpRequest(); var _param = "username=" + $('username').value + "&passwd=" + $('passwd').value + "&getprofile=1"; if (pcAjax) { pcAjax.open("POST", "test.php", false); pcAjax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); pcAjax.setRequestHeader("Content-Length", _param.length); pcAjax.send(_param);
alert(pcAjax.responseText);
alert ("123"); .... }
|
以上述办法实现ajax的调用,服务器脚本test.php中用sleep去等。可以看到先返回ajax的内容再返回123。
优点,基本实现了sleep方法,保证取到结果后才执行后续函数。
缺点,时间长的话也会引起浏览器假死状态。但是对于毫秒级的操作有一定用处。
阅读(2569) | 评论(0) | 转发(0) |