首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >嵌套ajax异步执行

嵌套ajax异步执行
EN

Stack Overflow用户
提问于 2014-08-26 14:30:24
回答 1查看 155关注 0票数 0

我有三个嵌套的ajax异步请求,用于将数据提取到javascript dataTable。这是它的伪代码,前两个调用是对web-API的调用,第三个调用是对我的MVC项目中从localDB获取数据的控制器的调用。

获取数据大约需要1分钟,进度条会正确更新,但当所有数据都完成时,所有行都会添加到我的dataTable中。我对控制器的第三个请求一定是出了问题。

代码语言:javascript
代码运行次数:0
运行
复制
$.ajax({
type: 'GET',
url: 'ListDevices'
dataType: 'json',
async: true,
success: function () {

     $.ajax({
     type: 'GET',
     url: 'GetLocationsForDevice'
     dataType: 'json',
     async: true,
     success: function () {

          $.ajax({
          type: 'GET',
          url: 'GetDetailsForLocationFromDB'
          dataType: 'json',
          async: true,
          success: function () {
                   //Add a new row to dataTable 
          }
          //Update progressbar   
     }
}

第三个请求中的所有内容似乎都会在最后完成并执行。你知道为什么吗?

EN

回答 1

Stack Overflow用户

发布于 2014-08-26 16:17:11

当然,你的第三个代码是在“成功”中执行的。

这仅在"GetDetailsForLocationFromDB“的XMLHttpRequest.readyState =4和XMLHttpRequest.status =200时执行。

因此,只有当所有数据都被获取时,它才会一次提供所有数据并添加所有行。

因此,如果您这样做,问题中的“当所有数据完成时,所有行都被添加到我的dataTable中”是不可避免的。这不是一个错误,它按照设计工作。

如果您想要“逐行”更新,则需要对每一行进行单独调用(在“GetLocationsForDevice”中使用$.each )。

不过,要注意的是,使用这种方法会减慢速度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25499416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档