Javascript 如何使函数在其他函数完成后运行
我试过这个:Javascript 如何使函数在其他函数完成后运行,javascript,Javascript,我试过这个: var showBoth = function(str, x) { showgrade(str, x); showsize(str, x); } 但是如果settime退出,如果showgrade花费太多时间,它将停止并运行showsize 当showgrade完成运行时,如何使showsize运行 这是我的全部功能 var showBoth = function(str, x) {`enter code here` show
var showBoth = function(str, x) {
showgrade(str, x);
showsize(str, x);
}
但是如果settime
退出,如果showgrade
花费太多时间,它将停止并运行showsize
当showgrade
完成运行时,如何使showsize
运行
这是我的全部功能
var showBoth = function(str, x) {`enter code here`
showgrade(str, x);
setTimeout(function(){showsize(str, x)},500);
}
试试这个:
function showsize(str,x)
{
if (str=="")
{
document.getElementById("txtHintsize"+x+"").innerHTML="";
return;
}
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 (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHintsize"+x+"").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","Function/ShowSize.php?q="+str,true);
xmlhttp.send();
}
function showgrade(str,x)
{
if (str=="")
{
document.getElementById("txtHintgrade"+x+"").innerHTML="";
return;
}
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 (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHintgrade"+x+"").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","Function/ShowGrade.php?q="+str,true);
xmlhttp.send();
}
var showBoth = function(str, x) {
showgrade(str, x);
setTimeout(function(){showsize(str, x)},500);
}
然后将showgrade更改为如下所示:
var showBoth = function(str, x) {`enter code here`
showgrade(str, x, function(){ showsize(str, x); });
}
像这样更改您的
showgrade
函数的xmlhttp.onreadystatechange
function showgrade(str, x, callback){
//DO WHAT YOU WANT HERE
callback.call();
}
当AJAX请求返回响应时,它将调用
onreadystatechange
函数,这将标记函数的结束。因此,我们只需从该函数中调用showsize
。“如何在showgrade完成运行后运行showsize”-这就是您的第一个代码所做的。showgrade()做什么?这是一个AJAX调用吗?它是否使用其他异步元素(超时、动画等)?不清楚您在问什么。在问题标题中,您询问如何使函数运行到另一个函数完成
,但在问题本身中,您询问如何使函数在另一个函数完成运行后运行
。你想要哪个?它将显示等级和大小取决于我选择的产品,它有很多值,这是showsiZe和grade@JohanesChan您能给我们展示一下showgrade
和showsize
的实现吗?如果//在这里做您想做的事
是异步的,回调在完成之前仍将被调用。如果是异步的,则需要等到收到响应后再进行回调。call();对不起,我知道我要试试,希望它能用它没用,只有一个在用你什么意思?这是小提琴。没有工作,只是在展示自己
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("txtHintgrade" + x + "").innerHTML = xmlhttp.responseText;
}
showsize(str, x);
}