Javascript jQuery:让第二个函数等待执行,直到第一个函数完成

Javascript jQuery:让第二个函数等待执行,直到第一个函数完成,javascript,jquery,.when,when-js,donejs,Javascript,Jquery,.when,When Js,Donejs,我试图使用when和done使第二个函数仅在第一个函数执行后运行,但它不起作用。 我在这里想要实现的是: 首先,我使用$(“#jobshome”).load(“jobs/newstjobs.jstoprow”)从外部页面加载div(在同一个域中,这里没有跨域),然后在完全加载后,将运行下一个脚本,它是一个简单的文本滑块。 但是现在外部HTML不再加载到“#jobshome”中 当我不使用这种方法时,我得到的结果是整个外部div将加载到单个滑块中,而这不是我所需要的 如果我像这样使用初始部分,它可

我试图使用
when
done
使第二个函数仅在第一个函数执行后运行,但它不起作用。 我在这里想要实现的是:

首先,我使用
$(“#jobshome”).load(“jobs/newstjobs.jstoprow”)
从外部页面加载div(在同一个域中,这里没有跨域),然后在完全加载后,将运行下一个脚本,它是一个简单的文本滑块。 但是现在外部HTML不再加载到“#jobshome”中

当我不使用这种方法时,我得到的结果是整个外部div将加载到单个滑块中,而这不是我所需要的

如果我像这样使用初始部分,它可以工作,但不符合预期:

$(function(){$("#jobshome").load("jobs/newest-jobs .js-toprow");});
        $(function(){

    //rotation speed and timer
我的代码如下:

jQuery(文档).ready(函数($){
$.when(函数(){
$(“#jobshome”).load(“jobs/newst jobs.js toprow”);
}).done(函数(){
//转速和定时器
var速度=3000;
var run=设定间隔(旋转、速度);
var slides=$('.js toprow');
var容器=$(“#jobshome”);
var elm=container.find(':first child').prop(“标记名”);
var item_height=container.height();
var previous='prevabc';//上一个按钮的id
var next='nextabc';//下一步按钮的id
slides.height(item_height);//将幻灯片设置为正确的像素高度
container.parent()高度(项目高度);
container.height(slides.length*item_height);//将幻灯片容器设置为正确的总高度
container.find(elm+':first')。before(container.find(elm+':last'));
重置幻灯片();
//如果用户单击了prev按钮
$(“#按钮ABC a”)。单击(函数(e){
//滑动项目
if(container.is(':animated')){
返回false;
}
如果(e.target.id==上一个){
container.stop().animate({
“顶部”:0
},1500,函数(){
container.find(elm+':first')。before(container.find(elm+':last'));
重置幻灯片();
});
}
if(e.target.id==next){
container.stop().animate({
“顶部”:项目高度*-2
},1500,函数(){
container.find(elm+':last')。after(container.find(elm+':first'));
重置幻灯片();
});
}
//取消链接行为
返回false;
});
//如果鼠标悬停,请暂停自动旋转,否则将其旋转
container.parent().mouseenter(函数(){
清除间隔(运行);
}).mouseleave(函数(){
运行=设定间隔(旋转、速度);
});
函数resetSlides(){
//并调整容器,使电流在框架中
container.css({
“顶部”:-1*项目高度
});
}
});
});
//单击下一个链接的简单函数
//计时器将调用此函数,旋转将开始
函数rotate(){
jQuery('#nextabc')。单击();
}
旋转木马{ 位置:相对位置; 宽度:60%; 保证金:0自动; } #幻灯片ABC{ 溢出:隐藏; 位置:相对位置; 宽度:100%; 高度:250px; } #面剂量{ 列表样式:无; 宽度:100%; 高度:250px; 保证金:0; 填充:0; 位置:相对位置; } #slidesabcdef{ 宽度:100%; 高度:250px; 浮动:左; 文本对齐:居中; 位置:相对位置; 字体系列:拉托,无衬线; } /*上一个和下一个按钮的样式*/ B.btn barabc{ 最大宽度:346px; 保证金:0自动; 显示:块; 位置:相对位置; 顶部:40px; 宽度:100%; } #纽顿斯巴克{ 填充:0 5px 0; 浮动:对; } #纽扣ABC a{ 文本对齐:居中; 显示:块; 字体大小:50px; 浮动:左; 大纲:0; 边际:0.60px; 颜色:#b14943; 文字装饰:无; 显示:块; 填充:9px; 宽度:35px; } 答:悬停, a#下一步:悬停{ 颜色:#FFF; 文本阴影:.5px0px#b14943; }
为什么不使用
load()
函数的回调

$("#jobshome").load("jobs/newest-jobs .js-toprow", () => {
   //do stuff after loading the html
}); 

不起作用时,因为它需要一个
承诺
延迟
对象,如果两者都不存在,则它将传递的值视为已解析的
延迟
(这基本上意味着它不等待,而是执行
,然后
/
立即完成)。

您想过使用全局标志吗。您可以使用if语句查看状态是否存在为true或false。我一直在使用它,它对我来说很有用在每个函数中查看是否一切正常。只有第二个函数是。您是否尝试过使用.then而不是.done。是的。它仍然不起作用。
=>
的含义是什么?箭头函数,您不妨将
()=>
替换为
函数()。但是我再也没有幻灯片循环了。我不知道你说的“幻灯片循环”是什么意思,但是你把内容加载到回调函数后需要运行的所有代码都放好了吗?
Uncaught DOMException:无法在节点上执行'insertBefore':新的子元素包含父元素。