Уродский setTimeout в node
обнаружил, что на ноде setTimeout не хочет принимать параметром строку, как в нормальных реализациях. Скорей всего с setInterval та же фигня. Пофиксил вот так:
Код:
setT=function(exp, time){return setTimeout(function(){eval(exp)}, time)} |
Цитата:
Цитата:
|
setTimeout НЕ должен принимать строку, просто эту возможность много где сохраняют в целях совместимости.
|
Цитата:
По сабжу: мой фикс во всех случаях будет работать? |
Цитата:
Но это не косяк. setTimeout не является частью ECMAScript, он прописан в стандарте браузерного JS W3C. То есть, в ноде никаких стандартов не нарушено - у них свои таймеры, не те, что в браузерах. Цитата:
|
Ну и, если уж и заниматься непотребством, то лучше так:
(function(){
var setTimeoutOrigin = setTimeout;
global.setTimeout = function() {
if (typeof arguments[0] == "string")
arguments[0] = new Function(arguments[0]);
setTimeoutOrigin.apply(this, arguments);
};
})();
setTimeout("console.log('dick')", 1000);
|
Что только люди не придумают, лишь бы не учить новый стандарт :)
setTimeout(() => console.log('dick'), 1000);
|
Еще пол года до релиза(
|
Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 07:29. |