我有这个javascript代码:
if (direction !== "leftnav") {
// DO THINGS
};
setTimeout(function () {
//DO OTHER THINGS AFTER THE FIRST THING
}, 1000);
是否可以在第一个之后执行2e功能而不必使用超时事件?
非常感谢你的帮助:)
答案 0 :(得分:9)
是的,这是可能的。以下是使用您提供的唯一代码的示例:
if (direction !== "leftnav") {
// DO THINGS...
// THEN
doOtherThings();
// THEN
doMoreThings();
};
var doOtherThings = function(){
//DOING OTHER THINGS
}
var doMoreThings = function(){
//DO EVEN MORE THINGS
}
答案 1 :(得分:7)
如果if语句中的内容阻塞,则Javascript将从上到下运行。如果是这样,你可以将代码放在if语句的正下方,在超时之外,它将正常运行。如果它是异步的,您可以使用在第一个函数完成时触发的回调来启动第二个函数。
下面提供的示例并不是真正有效的做事方式,但更多用于说明我上面所说的内容。在write()
函数中,您可能正在进行AJAX调用,或者等待用户单击某些内容,或者您有什么内容。解释器继续到下一行,该段将立即写入,并按阻止顺序。
<强> JS 强>
var write = function (v, cb) {
setTimeout(function() {
document.write(v);
cb && cb();
}, 1000);
}
if (true) {
write("I'm not blocking, blah<br/>", function() {
document.write("Running<br/>");
});
}
if (true) {
document.write("I'm blocking, blah<br/>");
}
document.write("Running<br/>");
<强>输出强>
I'm blocking, blah
Running
I'm not blocking, blah
Running
答案 2 :(得分:0)
您只需要按照您想要的顺序调用函数
function foo(){
//code
}
function bar(){
//other
}
bar();
foo();
像这样,bar
将在foo
之前调用。
答案 3 :(得分:0)
使用javascript promise和Promise.all