Какой смысл Meteor.setTimeout() против просто setTimeout()?
В Meteor, зачем использовать Meteor.setTimeout() вместо обычного setTimeout()?
Каково значение использования Meteor.setTimeout() вместо просто ванильного setTimeout или setInterval?
2 ответа
С помощью Meteor.setTimeout()
гарантирует, что этот код известен Fibers. Узнайте больше о волокнах: https://github.com/laverdet/node-fibers
На клиенте нет никакой разницы между ними.
На сервере, когда код выполняется для определенного пользователя (например, в вызовах методов), необходимо использовать Meteor.setTimeout
вместо window.setTimeout
чтобы Meteor запомнил, для какого пользователя должна вызываться функция. В промежутке между передачей функции Meteor.setTimeout
и когда он вызывается, другие пользователи могли вызывать методы на сервере, изменяя Meteor.userId
вместо этого вернуть свой идентификатор пользователя. Meteor.setTimeout
изменится так Meteor.userId
вернуть идентификатор пользователя для вызова пользователя Meteor.setTimeout
было сделано до вызова переданной ей функции.
Это дизайнерское решение.