setTimeout – Stepan Suvorov Blog https://stepansuvorov.com/blog Release 2.0 Sat, 10 Sep 2016 09:35:27 +0000 en-US hourly 1 https://wordpress.org/?v=6.3.1 setTimeout + ES6 Promise https://stepansuvorov.com/blog/2016/09/settimeout-es6-promise/ https://stepansuvorov.com/blog/2016/09/settimeout-es6-promise/#comments Sat, 10 Sep 2016 09:35:27 +0000 http://stepansuvorov.com/blog/?p=3120 Continue reading ]]> I’m just thinking how convenient could it be if we have setTimeout returning promise.

[javascript]
setTimeout(1000).then(/* … do whatever */);
[/javascript]

Let’s create our own one and call it ‘delay’ (using ES6 Promise):

[javascript]
delay = ms => new Promise(resolve => setTimeout(resolve, ms));
[/javascript]

so now we already can use our delay function:

[javascript]
delay(1000).then(/* … do whatever */);
[/javascript]

but let’s not forget about promise cancelation, in this case we need to store reject and timeout id:

[javascript]
delay = ms => {
var promiseCancel, promise = new Promise((resolve, reject) => {
let timeoutId = setTimeout(resolve, ms);
promiseCancel = () => {
clearTimeout(timeoutId);
reject(Error("Cancelled"));
}
});
promise.cancel = () => {
promiseCancel();
};
return promise;
}
[/javascript]

Plunker to play with this code.

Stackoverflow discussion.

]]>
https://stepansuvorov.com/blog/2016/09/settimeout-es6-promise/feed/ 4
setTimeout может содержать больше 2х параметров https://stepansuvorov.com/blog/2013/06/settimeout-func-parameters/ https://stepansuvorov.com/blog/2013/06/settimeout-func-parameters/#respond Wed, 26 Jun 2013 20:11:56 +0000 http://stepansuvorov.com/blog/?p=1109 Continue reading ]]> Никогда не задумывался на тем, что есть альтернативный синтаксис использования метода setTimeout:

var timeoutID = window.setTimeout(func, delay, [param1, param2, ...]);

param1, param2 – параметры, которые передадутся в функцию func, пример:

setTimeout(alert, 5000, "YES")

только в IE версии < 10 это не поддерживается. Но можно переопределить метод, как предложено тут.

 

P.S.: Сергей, спасибо за тему.

]]>
https://stepansuvorov.com/blog/2013/06/settimeout-func-parameters/feed/ 0