功能:使用js分页,需要按顺序请求后台接口,并按先后顺序把后台得到的数据,使用js拼接html插入到指定位置。

方案:为了代码可读性,使用了一个for循环,依次调用同一个ajax请求函数(每次传入指定页码),将得到的数据拼接成html,插入到指定位置;为了保证顺序性,ajax设置为同步传输,期待能够顺序返回,顺序插入。

现象:所有的ajax请求都返回数据、拼接完数据之后,才执行了插入html,而不是返回一个数据,插入一个html

原因:浏览器有两个线程,js引擎(JS内核)线程和GUI线程,分别对应执行js和渲染页面(插入html就是渲染页面),这两个进程之间一个时间只能执行一个,所以如果ajax设置了是同步执行,那么浏览器就会一直执行js线程,等执行完,才会去执行插入html的操作。可以参考同事找到的原因:https://www.cnblogs.com/yiyi17/p/8645830.html

解决方案:ajax改成异步执行,不再使用外部循环调用ajax函数保证顺序,而是通过递归调用保证顺序,即上一个ajax执行成功之后,再调用自己执行下一次

js ajax 同步 执行完js之后才执行插入html相关推荐

  1. Semaphore控制同时访问的线程个数countdownlatch等待多个线程执行完本身线程再执行...

    Semaphore控制同时访问的线程个数countdownlatch等待多个线程执行完本身线程再执行 Semaphore控制同时访问的线程个数countdownlatch等待多个线程执行完本身线程再执 ...

  2. Java等线程池执行完所有任务后再执行主线程

    2019独角兽企业重金招聘Python工程师标准>>> 因为要定时往数据库插入上百万数据,插入完之后再修改另外一部分数据, 怎么在线程池执行完所有任务后再执行主线程呢 import ...

  3. js设置ajax执行顺序,ajax同步处理(使得JS按顺序执行)

    在项目中碰到一个问题: 图一: 图二: 函数1代码:这里是因为有ajax请求,默认的是异步的 //点击分页页码,请求后台返回对应页码的数据 function getdata(fewPage,flag, ...

  4. js等待ajax执行完,js等待方法执行完再执行

    您好 哈哈,我刚解决了一个这样的问题如果直接for然后ajax,肯定是不行的因为ajax是异步调用,for循环都循环完了,ajax说不定才执行了第一个调用当然用同步调用的方式可以解决,但同步会阻塞浏览 ...

  5. js样式会影响ajax,js ajax同步请求造成浏览器假死的问题

    今天写了一个简单的loading效果,希望在点击加载按钮后会出现loading字样,然后执行ajax同步请求,加载完之后loading样式消失,本来是很简单的需求,结果遇上了很尴尬的问题~ 问题:当我 ...

  6. js 等待某个函数执行完_JS 函数的执行时机

    JS函数在不同的时候运行,会有不同的运行结果,本文将分别举例分析 案例一 let a = 1 function fn(){ console.log(a) } 注意:这里不会打印任何东西,因为函数只是声 ...

  7. cefsharp执行完js代码后获取返回值问题

    CefSharp相关操作 Task<CefSharp.JavascriptResponse> t = mychrome.GetBrowser().MainFrame.EvaluateScr ...

  8. 原生js.ajax内存溢出,【JS】解决内存溢出问题

    首页 专栏 javascript 文章详情 0 解决内存溢出问题 comer发布于 27 分钟前 webpack 运行 npm run build 内存溢出 JavaScript heap out o ...

  9. ace.js ajax 跳转,ace.js中文使用手册,收集比较全面

    发表于黑白课堂 ace.js 官方的github https://github.com/ajaxorg/ace ace 是一个用 JavaScript 编写的独立代码编辑器.我们的目标是创建一个基于浏 ...

  10. js ajax局部替换,纯JS实现AJAX局部刷新功能

    AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 J ...

最新文章

  1. 【Codeforces】967C Stairs and Elevators (二分)。
  2. 10万视频,所有面部图像均获授权,Facebook创建大规模Deepfake数据集
  3. OSNIT信息收集分析框架OSRFramework
  4. mysql 集群切换_完美起航-MySQLMHA高可用集群部署及故障切换(图文详解)
  5. linux 代码更新-打包-重启脚本
  6. 需求文档可以不签字吗之二-理论推导
  7. 五、Go语言复合数据类型(下)
  8. MyEclipse报错:String cannot be resolved to a type
  9. 东莞市初中生中考计算机内容,2019年广东东莞市中考考试科目及内容
  10. Google Analytics使用说明
  11. tf 设置多显卡_海美迪H7四代解码4k hdr局域网教程,用TF卡双启动libreELEC成功
  12. Win10连接NAS网络存储器失败解决方法
  13. 教你怎么去apple developer center(苹果开发者中心)下载Xcode的dmg安装包
  14. 手机修图软件测试,10款好用的手机图片编辑器软件排行榜
  15. 为你的App瘦身,优化你的App
  16. mmdection的安装、测试,心酸历程
  17. 解析SWD协议,烧写程序
  18. js查找数组中符合条件的元素
  19. Postman学习_Sinno_Song_新浪博客
  20. python反恐精英基础版_python反恐精英

热门文章

  1. 自绘GroupBox控件
  2. spark分片个数的确定及Spark内存错误(GC error)的迂回解决方式
  3. 将php中stat()得到的文件权限转成Linux形式
  4. Codeforces Beta Round #80 (Div. 1 Only) D. Time to Raid Cowavans 分块
  5. android studio 上手使用 大水逼问题
  6. linux 内存pss,内存耗用:VSS/RSS/PSS/USS
  7. 拓端tecdat|电力消耗模型构建、分析和预测
  8. 拓端tecdat|r语言聚类分析:k-means和层次聚类
  9. 拓端tecdat|matlab脉冲响应图的时域特征
  10. pytorch进度条