Уродский 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, время: 22:55. |