Як дізнатися про завершення виконання коду модуля в

Ось, наприклад, у нас приклад нікого асинхронного коду у файлі test.js:

Якщо виконати його як node test.js. то командний рядок впорається з асинхронність і повернеться в режим введення команд тільки через 2 секунди.

Тепер ще один приклад. Файл some_module.js (перепрошую, що так багато коду, намагався детально розписати кейс):

Звичайно, можна приписувати в потрібних місцях у функції some_method якийсь коллбек, який буде переданий з test.js (щось на зразок self.end ()), тоді проблема вирішується (зараз я так і роблю). Але це не витончене рішення проблеми, адже self.end () буде дублювати за змістом оператор return. Наприклад, у мене таких (some_module.js) модулів близько п'ятдесяти і оповіщати батьківський скрипт всюди вручну мене зовсім не влаштовує.

Ось звідки взялося моє невдоволення (там більш докладний опис проблеми, тут я описав простіше). Код кожної веб-сторінки у мене є окремим модулем, і всюди писати njs.exit () - не ок.

Ось тут і постає питання - чи є який-небудь системний (або не дуже) модуль Node.JS, який може мене оповістити, коли виконання коду мого модуля припинилося.
Я знаю про модуль process. але плодити процеси на кожен запит до сервера не в стилі Node.JS.

Як дізнатися про завершення виконання коду модуля в

Node Inspector 0.11. Network inspection available!

Якщо вже ви серйозно збираєтеся писати PHP подібний сервер, то моя вам порада почитайте про vm модуль, він би вам у нагоді.

Але чесно кажучи ви створили собі проблему на порожньому місці, тому що змінили мову програмування, але не змінили ідеологію мислення.

Не знайшов в документації по vm навіть прикладів виконання асинхронного коду, а тим більше опису подій.
З приводу ідеології ви не зовсім праві - я не намагаюся робити php-подібний сервер, njs всього лише один модуль сервера. У мене є дуже просте бажання - зробити так, щоб в файл з веб-сторінкою не треба було писати нічого, крім викликів потрібних тільки в цьому випадку методів. Тому я викинув все обгортки, тому не бажаю нагромаджувати код написанням коллбеков. Особисто мене дуже стомлює писати один і той же код в кожен новий файл.

Як дізнатися про завершення виконання коду модуля в

Скористайтеся Проміс, вони вирішують цю проблему
Якщо some_method буде повертати Promise, то можна написати так:


Можна заглибитися в es6 і скористатися, наприклад, генераторами:

Дякуємо. Я так зрозумів, що патерн promise все ж вимагає впровадження коллбеков в кінцевий код (код модуля), а я як раз і намагаюся обійтися без цього, максимально спростивши переривання виконання.
Ось з ECMAScript 6 я поки пильно не знайомі, так що зараз можу запитати дурість - хіба ваш другий приклад не є синхронним?

Ви так чи інакше все-одно використовуєте колбек, в цьому прикладі, наприклад, в setTimeout. Просто там же потрібно буде додати метод, який дозволяє ваш промис.

У es6 конструкції мови дозволяють писати асинхронний код в синхронному стилі. Ознайомитися можна тут habrahabr.ru/post/210330