Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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 将setTimeout设为通用函数,并将exec timeout设为_Javascript_Jquery - Fatal编程技术网

Javascript 将setTimeout设为通用函数,并将exec timeout设为

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”); } 函数调用

我有3个函数,假设它们是函数a,b和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)?要求是什么?我只是增加了时间,没有别的。现在你知道我在做什么了。不要只是匆匆忙忙地投票。看看超时的持续时间,它永远不会停止