我有一个函数可以从用户输入中获取值,然后根据该输入执行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-我运行的这个小例子与我的情况相当。但是似乎有很多方法可以做到这一点。这是可接受/适当的方法吗?还是还有其他更直接的方法?