先前的作业完成后立即调用功能[重复]

问题描述 投票:-3回答:2

此问题已经在这里有了答案:

我在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; ?>" />
javascript
2个回答
3
投票

您应该这样称呼它:

 xmlhttp.onreadystatechange = function() {
     if (this.readyState == 4 && this.status == 200) {
         document.getElementById("txtHint").innerHTML = this.responseText;
         get_fb();//  THIS
      }
   };

-2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.