Я работаю над библиотекой JavaScript, которая обеспечивает, помимо прочего, отображение/уменьшение функций в последовательностях, которые могут выполняться асинхронно.
A полезная душа на GitHub предположила, что для Node.js я должен использовать process.nextTick
, чтобы асинхронные итерации выполнялись так же быстро, как возможное. (В настоящее время библиотека использует setTimeout
во всех средах, которые, как я понимаю, являются субоптимальными.) Я довольно неопытен, когда дело доходит до Node, поэтому я читал о том, как работает этот метод, и неясно, я ли это хороший выбор или нет.
В соответствии с ответом на другой вопрос о SO кажется, что в этом случае было бы разумнее использовать setImmediate
, поскольку nextTick
, по-видимому, скачет перед ожидающими события ввода-вывода, что кажется мне плохо.
Это, по-видимому, подтверждается некоторыми замечаниями в официальном объявлении Node v0.10.0:
В v0.10 обработчики
nextTick
запускаются сразу после каждого вызова из С++ в JavaScript. Это означает, что, если ваш код JavaScript вызываетprocess.nextTick
, тогда обратный вызов срабатывает, как только код запускается до завершения, но перед возвратом в цикл событий.
Итак, я прав, и асинхронно повторяя последовательности, используя setImmediate
? Или лучше был бы nextTick
здесь? (В любом случае, ясное объяснение, почему было бы очень благодарно.)