Javascript 将setTimeout设为通用函数,并将exec timeout设为
我有3个函数,假设它们是函数a,b和c。所有这些都需要在不同范围内延迟启动 我可以在不同的地方做这样的事情Javascript 将setTimeout设为通用函数,并将exec timeout设为,javascript,jquery,Javascript,Jquery,我有3个函数,假设它们是函数a,b和c。所有这些都需要在不同范围内延迟启动 我可以在不同的地方做这样的事情 setTimeout(function()a()},100); setTimeout(function()b()},100); setTimeout(function()c()},100); 但是我怎样才能让它更干净呢 您可以尝试这种方法。 函数a(){ 控制台日志(“功能a”); } 函数b(){ 控制台日志(“功能b”); } 函数c(){ 控制台日志(“功能c”); } 函数调用
setTimeout(function()a()},100);
setTimeout(function()b()},100);
setTimeout(function()c()},100);
但是我怎样才能让它更干净呢 您可以尝试这种方法。
函数a(){
控制台日志(“功能a”);
}
函数b(){
控制台日志(“功能b”);
}
函数c(){
控制台日志(“功能c”);
}
函数调用函数(ref){
setTimeout(函数(){
ref();
},5000);
}
调用函数(a);
调用函数(b);
调用函数(c);
/*这些是匿名函数。他们永远不会互相等待*/
setTimeout(函数(){a();},5000);
setTimeout(函数(){b();},5000);
setTimeout(函数(){c();},5000)代码>您可以尝试这种方法。
函数a(){
控制台日志(“功能a”);
}
函数b(){
控制台日志(“功能b”);
}
函数c(){
控制台日志(“功能c”);
}
函数调用函数(ref){
setTimeout(函数(){
ref();
},5000);
}
调用函数(a);
调用函数(b);
调用函数(c);
/*这些是匿名函数。他们永远不会互相等待*/
setTimeout(函数(){a();},5000);
setTimeout(函数(){b();},5000);
setTimeout(函数(){c();},5000)代码>在我们开始之前,作为一种常见的误解,您必须知道,setTimeout
经过的时间并不意味着它将在100毫秒后执行。它可以更长(只是不能更早)。你一定要看菲利普·罗伯茨的精彩演讲
编辑-正如我的回答所述,设置超时方式
我认为@Adam Kettani给出的是您所需要的,因为有了承诺,您可以确保代码将在正确的时间和顺序执行,而且它也更干净
好了,我们开始谈正事吧。您可以将它们放入数组中,然后使用`forEach
const函数=[
函数(){
console.log('a');
},
函数(){
console.log('b');
},
函数(){
console.log('c');
},
];
forEach(fn=>setTimeout(fn,1000))代码>在我们开始之前,作为一种常见的误解,您必须知道,setTimeout
经过的时间并不意味着它将在100毫秒后执行。它可以更长(只是不能更早)。你一定要看菲利普·罗伯茨的精彩演讲
编辑-正如我的回答所述,设置超时方式
我认为@Adam Kettani给出的是您所需要的,因为有了承诺,您可以确保代码将在正确的时间和顺序执行,而且它也更干净
好了,我们开始谈正事吧。您可以将它们放入数组中,然后使用`forEach
const函数=[
函数(){
console.log('a');
},
函数(){
console.log('b');
},
函数(){
console.log('c');
},
];
forEach(fn=>setTimeout(fn,1000))代码>这正是ES6承诺的目的
function a() { console.log('a') }
function b() { console.log('b') }
function c() { console.log('c') }
function foo() {
return new Promise((resolve, reject) => {
setTimeout(function () {
resolve();
}, 100);
});
}
foo()
.then(a)
.then(b)
.then(c)
我理解这个例子有点模糊。但如果你理解承诺,你可以很好地适应你的问题(如果你不熟悉承诺,你可以在几个小时内掌握承诺)
您还可以使用Rjrx的可观测数据。“fromInterval”运算符就是您要查找的。可观测数据可能是ES7的一部分。这正是ES6承诺的目的
function a() { console.log('a') }
function b() { console.log('b') }
function c() { console.log('c') }
function foo() {
return new Promise((resolve, reject) => {
setTimeout(function () {
resolve();
}, 100);
});
}
foo()
.then(a)
.then(b)
.then(c)
我理解这个例子有点模糊。但如果你理解承诺,你可以很好地适应你的问题(如果你不熟悉承诺,你可以在几个小时内掌握承诺)
您还可以使用Rjrx的可观测数据。“fromInterval”运算符就是您要查找的。可观察对象可能是ES7的一部分。setTimeout(函数()a();b();c();},100)代码>@Mahi lol nope man。我需要在不同的事件中触发它们。我想要的是使setTimeout函数成为一个泛型函数。你在这里说泛型是什么意思,而不是明确你要求的setTimeout(function()a();b();c();},100)代码>@Mahi lol nope man。我需要在不同的事件中触发它们。我想要的是使setTimeout函数成为一个泛型函数。你这里说的泛型是什么意思,而不是cleat?你要求什么?你的意思是执行之间没有间隙?我已经介绍了两个涵盖这两个用例的版本。你说执行之间没有差距是什么意思?我已经介绍了两个涵盖这两个用例的版本。@AniketSahrawat,如果您不知道它是如何工作的,请不要否决投票。现在检查一下,它将等待5秒钟。您是否理解这段代码的作用setTimeout(function()a()},100);setTimeout(函数()b()},100);setTimeout(函数()c()},100)代码>?要求是什么?我只是增加了时间,没有别的。现在你知道我在做什么了。不要只是匆匆忙忙地投票。看看暂停时间,它永远不会被注意到。你不明白吗,兄弟?函数应该这样执行a()代码>然后等待100毫秒
然后b()
和等待100ms
您的代码所做的是=>它等待100ms
并执行a();b();c()代码>没有任何超时他只需要在调用函数之前超时。看他的例子,同样的事情正在发生,他说他能够实现,但他想要一个更清晰的代码。就这些@AniketSahrawat@AniketSahrawat,如果你不知道它是如何工作的,请不要否决投票。现在检查一下,它将等待5秒钟。您是否理解这段代码的作用setTimeout(function()a()},100);setTimeout(函数()b()},100);setTimeout(函数()c()},100)代码>?要求是什么?我只是增加了时间,没有别的。现在你知道我在做什么了。不要只是匆匆忙忙地投票。看看超时的持续时间,它永远不会停止