首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery AJAX种族条件

jQuery AJAX种族条件
EN

Stack Overflow用户
提问于 2015-03-14 03:11:50
回答 3查看 4.1K关注 0票数 1

我也见过类似的问题,但不是我的问题。

我有一件事

代码语言:javascript
复制
var x = 5;
if( some condition ){
    $.ajax({
        url:"...",
        success: function(response){
            x = response.x;
        }
    }
}
some other logic
use x variable

正在发生的事情是执行JS的线程在异步任务返回之前到达使用x的逻辑。

通常,我只会将任何逻辑放入成功函数中,但是无论条件是否满足,我都需要逻辑发生,我不想复制代码。有人有什么建议吗?我应该只是异步错误吗?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-14 03:35:42

如果条件为true,异步false将是一种方法,因为如果条件为true,则希望使用x返回的值。

你也可以利用承诺。

代码语言:javascript
复制
var x = 5;
var ajaxCall;
if(some condition) {
    ajaxCall = $.ajax({ 
        url: "...";
    });
}

function usingx(x) {
     //Add your logic
}

if(typeof(ajaxCall) === 'undefined') {
    usingx(x);      
} else {
    ajaxCall.done(function(data){
        usingx(data.x);
    });
}

它要么是异步false,要么是在两种情况下调用该函数,一种情况是它可以不等待就执行,另一种情况是它必须等待。

更复杂的方法是等待Ajax完成,然后运行该函数。

代码语言:javascript
复制
var x = 5;
var isCallMade = false;
if(some condition) {
    isCallMade = true;
    ajaxCall = $.ajax({ 
        url: "...";
    }).done(function(data){
        x = data.x;
    }).always(function(){
        isCallMade = false;
    });
}

function useX() {
    if(isCallMade) {
        setTimeout(useX, 100); //Wait for ajax call to finish
    } else {
        //logic using x
    }
}
票数 3
EN

Stack Overflow用户

发布于 2015-03-14 03:55:18

使用始终回调。

代码语言:javascript
复制
if( some condition ){
    $.ajax({
        url:"...",
        success: function(){ // BTW, as of jQuery 1.8 this is referred to as "done"
          // Success specific code
        },
        always: function() {
          // Code that always executes regardless of success or failure
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2015-03-14 03:34:57

JQuery也有一个also ()回调,以防Ajax失败。我只是把逻辑放在两种情况下。(抽象为一个函数)检查这个问题。

jQuery:处理失败的AJAX请求的回退

**修订

无论如何,$. ajax的完整()方法都会在ajax调用之后运行。听起来很完美。http://api.jquery.com/jquery.ajax/

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

https://stackoverflow.com/questions/29045018

复制
相关文章

相似问题

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