首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在jQuery.ajax()成功执行之前调用的其他函数

在jQuery.ajax()成功执行之前调用的其他函数
EN

Stack Overflow用户
提问于 2012-01-21 02:46:38
回答 4查看 2K关注 0票数 3

我想通过jQuery.ajax()获取一些数据,通过success保存这些数据,然后使用它。函数的顺序为:

代码语言:javascript
运行
复制
$.ajax({
        url: this.html_url,
        cache: false,
        success: function(data){
              //Here the data is saved via HTML5 localStorage
        }
    });

doSomething();//The stored data is used in this function.

问题是在成功函数保存下载的数据之前调用doSomething()。因此,数据甚至在保存之前就已经被使用了。有人能帮上忙吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-21 02:50:21

这是因为ajax调用是通过asynch实现的。通过default在ajax调用中设置async : false,它是true

代码语言:javascript
运行
复制
$.ajax({    
   url: this.html_url,
   cache: false,
   async : false, // added this
   success: function(data){
     //Here the data is saved via HTML5 localStorage
   }
});

success中调用doSomething的第二种方法

代码语言:javascript
运行
复制
success: function(data){
   //Here the data is saved via HTML5 localStorage
    doSomething()'
}
票数 1
EN

Stack Overflow用户

发布于 2012-01-21 02:49:51

假设我明白你的意思。为什么不在success回调中调用doSomething()呢?

代码语言:javascript
运行
复制
$.ajax({
    url: this.html_url,
    cache: false,
    success: function(data){
          //Here the data is saved via HTML5 localStorage
          doSomething();//The stored data is used in this function.
    }
});
票数 1
EN

Stack Overflow用户

发布于 2012-01-21 02:51:13

这是因为AJAX调用是异步的。这意味着您的脚本不会等待它们完成后再继续(很像setTimeout())。

只需在成功回调中包含doSomething()函数即可。

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

https://stackoverflow.com/questions/8946338

复制
相关文章

相似问题

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