Chinaunix首页 | 论坛 | 博客
  • 博客访问: 267016
  • 博文数量: 19
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 685
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-30 20:45
文章分类

全部博文(19)

文章存档

2008年(19)

我的朋友

分类: 系统运维

2008-07-04 19:04:01

用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方法,保证取到结果后才执行后续函数。

缺点,时间长的话也会引起浏览器假死状态。但是对于毫秒级的操作有一定用处。

阅读(2543) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~