Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Можно ли так использовать callback функции? (https://javascript.ru/forum/node-js-io-js/67890-mozhno-li-tak-ispolzovat-callback-funkcii.html)

Denwf 13.03.2017 16:05

Можно ли так использовать callback функции?
 
Здравствуйте!
Прошу помощи опытных.
Изучаю node js и возник вопрос.
В двух словах. Предположим имеется скрипт, который постоянно висит в памяти. И имеются две асинхронные функции.
function a(callback){
  callback();
}

function b(callback){
  a(function(){
    callback();
  });
}

b(function(){
  console.log('end');
});

Это стандартный вариант.

1. Но могу ли я делать вот так?
function a(callback){
  callback();
}

function b(callback){
  a(function(){}); // как будто запускаю в фоне
  callback();
}

b(function(){
  console.log('end');
});

т.е. не дожидаясь выполнения функции А, выходить из функции B? Как будто я запускаю функцию А в "фоне". При этом оговорюсь ещё раз, скрипт не прекращает своей работы после выполнения функции B.
2. Если идёт многократное обращение к функции B, не возникнет каких либо проблем в работе скрипта с функцией А?
Пример достаточно упрощён, всё гораздо глобальнее ) Но с точки зрения опытных, какие подводные камни могут ждать меня при таком подходе?

Alexandroppolus 13.03.2017 23:15

Надо смотреть по ситуации. Оба варианта допустимы, какой более подходящий, зависит от задачи. Во втором варианте мы не сможем отследить окончание работы функции а, но зато ловим её начало.
Всё это из предположения, что а и b стартуют некую асинхронщину, по окончании которой отбивают callback. Иначе вопрос лишен смысла.

А вообще, если затеваешь всякие комбинированные конструкции, советую сразу раскурить промисы. Ибо в них сила и мудрость.

Denwf 14.03.2017 09:20

Спасибо за ответ и совет, суть уловил. Пока справлялся без промисов, но сейчас пишу большой проект и вижу, что промисы просто необходимы.


Часовой пояс GMT +3, время: 15:15.