此问题已经在这里有了答案:
我在onclick中使用此功能:
function showUser(str) {
if (str == "") {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
}
};
xmlhttp.open("GET","reseller.php?ostan="+str,true);
xmlhttp.send();
get_lat_lon()
}
}
我需要在先前的工作完成后立即调用get_lat_lon()函数,但是get_lat_lon()在之前的作业完成之前会自行启动。
当我设置1s延迟时,我需要立即调用get_lat_lon(),它可以正常工作。
这是我的get_lat_lon:
function get_lat_lon(){
var mla = 0;
var mlo = 0;
var mz = 0;
var la = 0;
var lo = 0;
var na = 0;
mla = document.getElementById('mla').value;
mlo = document.getElementById('mlo').value;
mz = document.getElementById('mz').value;
la = document.getElementById('la').value;
lo = document.getElementById('lo').value;
na = document.getElementById('na').value;...
这是我的PHP输出:
<input type="hidden" class="mla" id="mla" value="<?php echo $s1; ?>" />
<input type="text" class="mlo" id="mlo" value="<?php echo $s2; ?>" />
<input type="hidden" class="mz" id="mz" value="<?php echo $zoom; ?>" />
<input type="hidden" class="os" id="os" value="<?php echo $ostan; ?>" />
<input type="hidden" class="la" id="la" value="<?php echo $lat; ?>" />
<input type="hidden" class="lo" id="lo" value="<?php echo $lon; ?>" />
<input type="hidden" class="na" id="na" value="<?php echo $name; ?>" />
您应该这样称呼它:
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
get_fb();// THIS
}
};
JavaScript实现async function
声明。您想要的是这样的东西:
function showUser(user)
{
// your logic
get_fb_async();
}
async function get_fb_async()
{
get_fb() = await showUser(user);
}
这将根据您的get_fb()
函数的行为而有所不同,但是现在您有了逻辑。
更多详细信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function