• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ajax 同步和异步XMLHTTP代码分析
    在网页脚本编程中,绝大多数情况应该使用异步模式;同步模式将会挂起当前的脚本引擎,所以当你使用同步模式时,你应该明白自己要什么。而在C++开发中,同步模式应该是主流,如果一定要使用异步模式加回调,可以参考Using IXMLHTTPRequest onreadystatechange from C++一文。

    下面是采用异步模式获取远程主机上RSS文件的代码,关键的地方是设置一个回调函数给IXMLHTTPRequest::onreadystatechange。为了防止脚本过早退到控制台,使用了asyncDone变量检测当前状态。当然,如果在网页中使用XMLHTTP,则不用这么麻烦——只要IE网页不关闭,回调函数不会退出。
    复制代码 代码如下:

    var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.6.0");
    var url = "https://www.jb51.net/rss.xml";

    var asyncDone = false;

    try {
    xmlhttp.open("GET", url, true);
    xmlhttp.onreadystatechange = onReadyStateChange;
    xmlhttp.send(null);

    // loop so that the program from quiting
    while (!asyncDone) {
    WScript.Sleep(100);
    }

    WScript.Echo(xmlhttp.responseText);
    } catch (e) {
    WScript.Echo(e);
    }

    function onReadyStateChange() {
    WScript.Echo("readyState: " + xmlhttp.readyState);
    if (xmlhttp.readyState == 4) {
    asyncDone = true;
    }
    }

    同步模式获取远程主机资源的代码要简单许多:

    复制代码 代码如下:

    var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.6.0");
    var url = "https://www.jb51.net/rss.xml";

    try {
    xmlhttp.open("GET", url, false);
    xmlhttp.send(null);
    WScript.Echo(xmlhttp.responseText);
    } catch (e) {
    WScript.Echo(e);
    }

    不过,如果在IE中使用同步模式,由于没有了回调的机制而且IE又不支持脚本开线程,脚本会被挂起直到XMLHTTP返回。注意,IE界面本身会被挂起。

    同步还是异步,具体问题还要具体分析。
    您可能感兴趣的文章:
    • 通过XMLHttpRequest和jQuery实现ajax的几种方式
    • Ajax核心XMLHttpRequest总结
    • Jquery Ajax xmlhttp请求成功问题
    • AJAX在不同浏览器中XMLHttpRequest对象的生成示例
    • Ajax通讯原理XMLHttpRequest
    • Ajax创建XMLHttp对象的完美兼容性代码
    • jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
    • Ajax xmlHttpRequest的status的值的含义
    • ajax 入门基础之 XMLHttpRequest对象总结
    • Ajax获取XMLHttp对象的方法
    上一篇:ajax+php 谷歌搜索框自动填充功能 实例代码
    下一篇:AJAX 动态获取当前时间(php)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    ajax 同步和异步XMLHTTP代码分析 ajax,同步,和,异步,XMLHTTP,