Задать вопрос
@Neckvik

Node js асинхронность при вызове функции, как?

Помогите разобраться.
Я немного не понимаю как Node js, функцию сделать асинхронной?
На сколько я понял можно сделать через setImmediate или setTimeout, есть еще какие то варианты?
setTimeout(0) можно ли использовать или это плохая практика ? что вообще лучше использовать ?
как определить функция которую вызываю она синхронная или асинхронная ?

И правильно же я понимаю промисы ни как не влияют на асинхронность, они только помогают упорядочить что за чем будет вызваться? или все же то что мы закидываем в промис у нас попадает как новая функция в очередь?
  • Вопрос задан
  • 419 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
rockon404
@rockon404
Frontend Developer
Я немного не понимаю как Node js, функцию сделать асинхронной?

Вариант 1:
const asyncFn = () => new Promise((resolve, reject) => {
  // do some async call and resolve or reject
});


Пример:
const delay = duration => new Promise(res => setTimeout(res, duration));

delay(200).then(() => {
  // do something after delay
});


Вариант 2:
const asyncFn = async () => {
  // do something with awaiting async call result or not
  // and return result or not
});


Пример:
const getSomeData = async () => {
  const result = await someAsyncCall();
  return someOtherAsyncCall(result);
};


Вариант 3:
const asyncFn = cb => {
  // do some async call and call cb
}


Пример:
const delay = (duration, cb) => setTimeout(cb, duration));

delay(200, () => {
  // do something after delay
});


Во всех вариантах вам придется использовать коде какой-либо встроенный асинхронный вызов, таймер или стороннюю библиотеку.

как определить функция которую вызываю она синхронная или асинхронная ?

Обычно такая функция возвращает Promise или принимает колбек.

Почитать:
Методы асинхронного программирования
Понимание асинхронного программирования
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы