2014-11-12 2 views
4

Мне интересно, каковы условия, при которых node.js завершает цикл события. Как node.js выясняет, что дальнейшие события не будут инициированы? Напр. в случае http-клиента или приложения для чтения файлов.Когда завершается цикл событий node.js?

+2

путем подсчета. Асинхронные задачи должны регистрироваться в цикле событий, и их также можно отменить. Для примера см. Методы '' unref' и 'ref' таймеров] (http://nodejs.org/api/timers.html#timers_unref). – Bergi

+1

Я бы порекомендовал вам посмотреть это замечательное видео [Philip Roberts: Какая черта цикла событий в любом случае? | JSConf EU 2014] (https://www.youtube.com/watch?v=8aGhZQkoFbQ) – AhmadAssaf

+0

@Bergi я даже не закончил редактирование своего ответа, и я обнаружил, что он уже преобразован в комментарий. Чтобы кратко объяснить, время выполнения Javascript может делать одно за раз, поэтому оно называется «однопоточным». Однако у вас есть причина, по которой мы можем делать что-то одновременно, например, HTTP-запросы из-за «API-интерфейсов браузера» или C++ API. Теперь любой из этих API помещается в очередь задач. Цикл событий имеет одну очень простую работу. Он всегда будет выполнять одно задание из очереди задач, учитывая, что основной столбец пустой и нажмите его в стек выполнения/выполнения. – AhmadAssaf

ответ

-2

я рекомендовал бы вам посмотреть это большое видео Philip Roberts: What the heck is the event loop anyway? | JSConf EU 2014

Чтобы объяснить кратко, Javascript среда может сделать одну вещь в то время, таким образом, она называется «однопоточный». Тем не менее, у вас есть причина, по которой мы можем делать что-то одновременно, например, HTTP-запросы и т. Д., Потому что он вызывает видео как «браузерные API» для браузера, а для бэкэнд-среды, такой как Node.js, это API C++. Теперь любой из этих «внешних» вызовов API, таких как HTTP-клиент, переводится в очередь задач. Цикл событий имеет одну очень простую работу. Он всегда будет выполнять одно задание из очереди задач, учитывая, что основной столбец пустой и нажмите его в стек выполнения/выполнения. Таким образом, цикл событий прекращается, когда нет рабочих мест в очереди задач (внешние вызовы API)

Я рекомендую смотреть полное видео для лучшего понимания :)

+0

Спасибо за видео! – vjain27

Смежные вопросы