Какой смысл 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 было сделано до вызова переданной ей функции.

Это дизайнерское решение.

Другие вопросы по тегам