jquery获取内部值返回外部函数

时间:2018-01-12 13:41:43

标签: javascript jquery ajax function

我的代码:

function validateAddress(type){

    var status = true

    if(type == 0 || type == 2){
      $.get( "/user/status/0", function( data ) {
          if(!data.status){
            status = false
          }
          else
            status = true
        });
    }
    else{
      $.get( "/status/1", function( data ) {
          if(!data.status){
            status = false;
          }
          else{
            status = true
          }
        });
    }
    console.log(status)
    return status
  }

如何确保从功能返回内部状态?目前它一直返回true,因为某种程度上状态值没有改变。 AJAX部分本身工作正常。

1 个答案:

答案 0 :(得分:0)

您需要考虑到AJAX是异步的事实 - 您的$ .get调用不会阻塞,它们只是排队事件并且当前通过您的方法继续执行,因此它最终会返回您指定的初始值状态,真实,每一次。

你可以让你的函数返回一个jQuery的延迟实例来解决这个问题:

function validateAddress(type){

    var promise = $.Deferred();
    var status = true;

    if(type == 0 || type == 2){
      $.get( "/user/status/0", function( data ) {
          if(!data.status){
            status = false;
          }
          else
            status = true;

          // This is the important bit
          promise.resolve(status);
        });
    }
    else{
      $.get( "/status/1", function( data ) {
          if(!data.status){
            status = false;
          }
          else{
            status = true;
          }

          // This is the important bit
          promise.resolve(status);
        });
    }
    return promise;
  }

然后,当使用该函数的返回值时:

validateAddress(someTypeVarPassedInHere)
    .done(function (status) {
        console.log(status);
    });