js-依次循环异步请求(普通/ES6)

要求:请求5次ajax,将结果依次显示在页面

老办法:用数组+定时器代替for循环

 function getTime(j, length) {
            setTimeout(function () {
                $start = new Date().getTime();
                $.get(seturl, function (e) {
                    $end = new Date().getTime();
                    //js请求时间
                    //计算出相差天数
                    $date = $end - $start;
                    $seconds = Math.ceil($date / (1000));
                    $last = $seconds - e['time'];
                    console.log($seconds);
                    $html = $('<li>' + j + '  test1: ' + e["time"] + 's' + '   /   test2:  ' + $last + 's</li>');
                    $html.appendTo($('.list'));
                    //成功后,判断是否要接着执行
                    if (++j < length) {
                        getTime(j, length);
                    }
                    if (j == 6) {
                        //loading end
                        $('#loading').hide();
                    }
                }, 'json').error(function (XMLHttpRequest, textStatus, errorThrown) {
                    alert(XMLHttpRequest.status);
                    alert(XMLHttpRequest.readyState);
                    alert(textStatus);
                })
            }, Math.random() * 3000);
        }
        getTime(1, 6);

新办法:ES6 async await

```
async function getTime() {
for (var i = 1; i <6 ; i++) {
await Time(i);
}
}

  function Time(j) {
        $start = new Date().getTime();
        $.get(seturl, function (e) {
            $end = new Date().getTime();
            //js请求时间
            //计算出相差天数
            $date = $end - $start;
            $seconds = Math.ceil($date / (1000));
            $last = $seconds - e['time'];
            //显示在页面上
            $html = $('<li>' + j + '  test1: ' + e["time"] + 's' + '   /   test2:  ' + $last + 's</li>');
            $html.appendTo($('.list'));
            if (j == 5) {
            // loading end
            $('#loading').hide();
            }
        }, 'json').error(function (XMLHttpRequest, textStatus, errorThrown) {
            alert(XMLHttpRequest.status);
            alert(XMLHttpRequest.readyState);
            alert(textStatus);
        })
    }

getTime();

```

原文地址:https://www.cnblogs.com/gggggggxin/p/11526694.html

时间: 2024-10-22 09:44:48

js-依次循环异步请求(普通/ES6)的相关文章

手动封装js原生XMLHttprequest异步请求

Code Object.extend =function(targetObj,fnJson){ //扩展方法,类似于jQuery的$.extend,可以扩展类的方法,也可以合并对象 for(var fnName in fnJson){ targetObj[fnName]=fnJson[fnName]; } return targetObj; }; HttpAjax = (function(){ function HttpAjax(options){ var settings={ type:'po

js方式的异步请求

1 有的企业要求你要会写, 2 *1. 异步请求的get方式 3 代码: 4 //创建一个XmlHttpRequest请求 5 function createXmlHttpRequest(){ 6 //声明一个请求,并是设置为空 7 var xhr=null; 8 try{ 9 //兼容IE浏览器的请求 10 xhr=new ActiveXObject("microsoft.xmlhttp"); 11 }catch(e){ 12 try{ 13 //其他浏览器的请求对象 14 xhr=

js实现所有异步请求全部加载完毕后,loading效果消失

在实际开发中,一定有情况是这样的,一个页面我们有多个地方请求了ajax,在这种情况下,我们要实现数据没来之前出现我们炫酷的loading效果,而且要等到所有的ajax都请求完毕后,才让我们的loading效果消失,那么问题来了,每个ajax请求数据的时间都是不确定的,我们这个loading效果结束的逻辑又应该放到哪里呢?就好比这样(伪代码模拟): console.log('loading效果图旋转中') var timer1 = setTimeout(() => { console.log('第

关于异步请求AJAX的详解

1,异步请求的方法步骤: 1,判断当前用户支持的浏览器类型 XMLHttpRequest:判断是否支持非IE浏览器,对应的创建方法:xmlhttp = new XMLHttpRequest(); window.ActiveXObject:判断是否支持IE浏览器,对应的创建方法:xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 2,开辟连接创建路径 xmlhttp.open(参数一,参数二,参数三); 参数一:请求的方式get  post

关于异步请求AJAX的具体解释

1,异步请求的方法步骤: 1,推断当前用户支持的浏览器类型 XMLHttpRequest:推断是否支持非IE浏览器,相应的创建方法:xmlhttp?=?new?XMLHttpRequest(); window.ActiveXObject:推断是否支持IE浏览器,相应的创建方法:xmlhttp?=?new?ActiveXObject("Microsoft.XMLHTTP"); 2,开辟连接创建路径 xmlhttp.open(參数一,參数二,參数三); 參数一:请求的方式get??post

js异步请求发展史和yield

万恶的回调 对前端工程师来说,异步回调是再熟悉不过了,浏览器中的各种交互逻辑都是通过事件回调实现的,前端逻辑越来越复杂,导致回调函数越来越多,同时 nodejs 的流行也让 javascript 在后端的复杂场景中得到应用,在 nodejs 代码中更是经常看到层层嵌套. 以下是一个典型的异步场景:先通过异步请求获取页面数据,然后根据页面数据请求用户信息,最后根据用户信息请求用户的产品列表.过多的回调函数嵌套,使得程序难以维护,发展成万恶的回调. $.get('/api/data', functi

[js开源组件开发]network异步请求ajax的扩展

network异步请求ajax的扩展 在日常的应用中,你可能直接调用$.ajax是会有些问题的,比如说用户的重复点击,比如说我只希望它成功提交一次后就不能再提交,比如说我希望有个正在提交的loading效果.所以我做network这个组件来扩展$.ajax,希望全中国的人民们喜欢. 这里使用到了上篇[js开源组件开发]loading加载效果 一个loading效果,但为了让它独立运行,所以没有进行引用,而是直接做了一个loading方法在里面.它的具体效果图如下: 它的实例DEMO地址请点击这里

Ajax_原生ajax写法、理解异步请求、js单线程+事件队列、封装原生ajax

1.原生Ajax 一定要理解Ajax出现的背景 Ajax通过url查询后端接口的数据,在前端做数据的解析和局部更新 1.隐藏帧iframe方式实现页面局部更新---只是为了比较好的用户体验 访问后台接口数据显示在iframe页面中显示,没有做主页面的刷新,但页面实际上也刷新了  看左上角的转圈圈了 2.Ajax异步请求,真正实现页面局部刷新,没有跳转,坐上角小圈圈没转 原生Ajax写法---注意ajax的缩写 3.服务器放回了xml数据格式 解析过程还是很麻烦的,所以这种数据格式很少用了. 4.

Ajax:实现后台验证js实现get方式的异步请求,判断用户名是否重复

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html> <head> <title>ajax</title> <script src="/ajax/js/jquery-3.3.1.min.js"></script> </head> <body> <