jquery getJSON函数计时问题

bob*_*bob 6 jquery json timing

我认为我的程序正在跳过JSON调用的结果.是否可以在此处创建闭包函数或使程序等待JSON调用返回?

function username_not_duplicate(username) {
   var function_name = "get_username";
   var parameters = [username];
   var url = "/get_functions.php?function_name=" + function_name + "&parameters=" + parameters;
   $.getJSON(url, function(user_name) {
      if (user_name == true) {     
         return true;
      }
   });
   return false;
}
Run Code Online (Sandbox Code Playgroud)

Dre*_*lls 12

$.getJSON()API调用是异步的.您可以使用$.ajax()以下方式使其同步:

function username_not_duplicate(username) {
   var function_name = "get_username";
   var parameters = [username];
   var url = "/get_functions.php?function_name=" + function_name + "&parameters=" + parameters;
   var rslt = false;
   $.ajax({
     async: false,
     url: url,
     dataType: "json",
     success: function(data) {
       if (data == true) {     
         rslt = true;
       }
     }
   });
   return rslt;
}
Run Code Online (Sandbox Code Playgroud)


eig*_*ein 1

是的,立即username_not_duplicate返回,false因为getJSON是异步的(即非阻塞)。该语句仅从响应处理程序return true返回。true通常,您不应该执行您想要实现的此类阻塞调用。我想您可以考虑在全球某个地方记住请求的状态。