jQuery-等待异步函数返回响应

时间:2020-10-11 03:53:52

标签: javascript jquery ajax promise

我有一个函数可以从用户输入中获取值,然后根据该输入执行2件事中的1件事。通过AJAX调用运行一些服务器端代码可获得这些值中的1。由于该值必须在其他几个位置进行计算,因此它是它自己的函数。

主要功能

function showInfo() {
  // get user input values
  var fname = $myform.find('[name=first_name]').val();
  ...
  
  var zip = '';
  // get user's zip code from database
  zip = getZip($uid);

  if(zip == 12345) {
    $content1.show();
  } else {
    $content2.show();
  }
}

如您所见,此函数调用另一个函数getZip,该函数包含AJAX调用,如下所示:

function getZip(UID) {
  $.post( "db.php", { userID: UID  })
  .done(function( data ) {
    return data;
  });
}

我的问题是第一个函数中的变量$zip(用于确定要显示的内容集的变量)是一个空字符串,直到第二个函数完成为止,因此$content2每次都会显示。

我知道解决方案与诺言有关,但是我很难解决这个问题。

https://codepen.io/daveh0/pen/zYBGKWE-我运行的这个小例子与我的情况相当。但是似乎有很多方法可以做到这一点。这是可接受/适当的方法吗?还是还有其他更直接的方法?

0 个答案:

没有答案