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

  • 相关阅读:
    C#面向对象--类
    Unity DOTS--面向数据编程前的准备
    C#面向对象--命名空间
    C#面向对象--多态
    C#面向对象--继承
    C#中堆和栈的区别
    sql执行顺序
    cookie session
    栈和队列
    c# 单例模式
  • 原文地址:https://www.cnblogs.com/princeness/p/11664925.html
Copyright © 2011-2022 走看看