zoukankan      html  css  js  c++  java
  • Ajax回调按发起请求的顺序执行?

    方法一:
    记录每一个请求的发起时间,然后每个请求回来后先判断当前展示在页面上的数据的发起时间,如果本次返回的结果的发起时间晚于当前显示的数据的发起时间,就替换,否则不替换。

    function(){
      var lastShowedResult = 0//当前显示的结果的请求时间,初始为0
      $('input').keyup(function(){
        var requestTime = +Date.now()//每次发请求时记录一下时间,转换成数字,注意在闭包里面
        $.get(url, function(data){
          if (requestTime > lastShowedResult) {//请求拿到后判断是否晚于当前正显示的内容的发起时间,如果是,则
            lastShowedResult = requestTime//替换当前显示结果的发起时间
            showResult(data)//替换页面上的内容
          }
        })
      })
    })()
    

    方法二:
    其实你想要的不是顺序执行,而是如果一个前面的请求返回的话,不要覆盖后面的请求。所以一个可行的方案应该是把请求和结果联系起来。
    req1 -> res1
    req2 -> res2
    req3 -> res3
    都存到一个array里面[{req:req1, res:res1},{req:req2, res:res2},{req:req3, res:res3}]这样子每次ajax返回的时候,第一步是更新这个包含了所有结果的array,第二步才是决定要不要修改DOM

  • 相关阅读:
    关于http请求头的一些事
    关于http抓取字段的一些事
    多线程的一些事
    正则的一些事
    出现问题集及解决方案
    常见的正则
    Http常见状态码
    list&tuple简记
    函数式编程--高阶函数--sorted
    函数式编程--高阶函数--filter
  • 原文地址:https://www.cnblogs.com/princeness/p/11664925.html
Copyright © 2011-2022 走看看