Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何等待函数结束,直到转到下一个代码?_Javascript_Jquery - Fatal编程技术网

Javascript 如何等待函数结束,直到转到下一个代码?

Javascript 如何等待函数结束,直到转到下一个代码?,javascript,jquery,Javascript,Jquery,我有下面的代码来添加一个内容,然后使用这个新添加的内容 为此,有必要等待,直到内容成功添加,然后我才尝试使用它 我读了一些关于.done或.when和timeout的文章,但我不理解这一点,我认为这真的很复杂-所以我请求帮助找到最简单的方法,等待添加新内容,然后再继续编写脚本 这是我的密码 function create_content(){ $('#element').html('<div>my new content</div>'); } if($('#elemen

我有下面的代码来添加一个内容,然后使用这个新添加的内容

为此,有必要等待,直到内容成功添加,然后我才尝试使用它

我读了一些关于.done或.when和timeout的文章,但我不理解这一点,我认为这真的很复杂-所以我请求帮助找到最简单的方法,等待添加新内容,然后再继续编写脚本

这是我的密码

function create_content(){ $('#element').html('<div>my new content</div>'); }

if($('#element div').length<=0){ create_content(); }

$('#element div').addClass('add-this-to-new-content');
函数create_content(){$('#element').html('my new content');}
如果($('#element div')。长度请尝试以下操作:

    function create_content_new(){ $('#element').html('<div>my new content</div>'); console.log('done_new'); return true; }

if($('#element div').length<=0){ var test = create_content_new(); }
console.log('call');
$('#element div').addClass('add-this-to-new-content');
函数create_content_new(){$('#element').html('my new content');console.log('done_new');返回true;}

if($('#element div').length使用承诺,并在该承诺解析函数内委托添加新html的任务,并在解析中返回长度。现在可以使用
然后
并检查值

函数创建内容(){
返回新承诺(功能(解决、拒绝){
$('#element').html(“我的新内容”);
解析($('#元素div').length)
})
}
创建内容()。然后(函数(数据){
控制台日志(数据);

if(data如果代码的目的是只添加一个类..您可以使用这样的方法

函数创建内容(NewClass){
$('#element').html('mynewcontent').find(“>div”).addClass(NewClass);
}

如果($('#element div').length有多种方法可以实现您在这里所需的功能,我建议您区分您编写的JavaScript和jquery代码,这样会更容易理解这些方法(如.then、.when..等)

在下面的Git Repo中检查JQuery/Javascript的完整分离,希望您能够完全理解它

吉特回购



if($('#element div').length尝试使用setTimeout函数。给$('#element div').addClass('add-this-to-new-content')加上几秒钟的超时时间,它将等待您给出的时间。我已经读过一些关于它的内容,但我不明白,您能根据我的代码给我一个小例子,让我明白它应该如何工作吗?addClass(){$('#element div').addClass('add-this-to-new-content');}setTimout(function(){addClass()},5000);Jquery'HTML()方法既不是异步的,也不需要时间来完成其操作。为什么不按顺序执行您想要的操作呢?
<!doctype>
<html>
<head>

</head>
<body>
<div id="element">

</div>

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
    if($('#element div').length<=0){ 
        create_content(callback_function); 
    }

    function create_content(callback){ 
        $('#element').html('<div>my new content</div>'); 
        callback();
    }

    function callback_function()
    {
        $('#element div').addClass('add-this-to-new-content');
    }


</script>
</body>
</html>