Создать успокоительный API-интерфейс с помощью узла архитектуры, управляемого событиями JS?

Привет я новичок в nodejs насколько я понимаю nodejs является event-driven которая является мощной особенностью в нем.

я учил nodejs за последние несколько дней и попробуйте построить в нем успокоительный API mongodb, но я не могу использовать его event-driven архитектура в apis ниже мой код sudo

//routes

   app.get('/someUrl', SomeClass.executeSomeController);


//controller

  class SomeClass {
    async executeSomeController(req, res){
       let response = awaitSomeHelper.executeQueryAndBusinessLogic(req.body);
       res.send(response)
  }

}

Насколько я понимаю, я написал нормальный код, как я привык писать Ror или же PHP Единственное отличие я обнаружил, что controller бежит asynchronous чего не происходит в Ror или же Php,

Как я могу использовать event-driven архитектура для создания успокоительного API

1 ответ

Надеюсь, я смогу ответить на ваш вопрос. В основном в некоторых случаях термин "управляемая событиями архитектура" можно объяснить по-разному. В одном случае это базовый основной поток NodeJS, который объясняет все асинхронные функции. В другом случае корень вопроса может быть связан с событиями, источником событий и т. Д.

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

Основной асинхронный поток

Как я понимаю, у вас есть вопросы, связанные с асинхронными операциями в NodeJS. Это корень технологии - все тяжелые операции будут выполняться асинхронно. Это все о V8 и Event Loop.

Таким образом, для работы с асинхронными операциями вы можете использовать функции обратного вызова, обещания или синтаксис async-await.

Функции обратного вызова

function asyncFunction(params, callback) {
  //do async stuff
  callback(err, result);
}

function callbackFunction(err, result) {

}

asyncFunction(params, callbackFunction);

обещания

promiseFunction()
  .then(anotherPromiseFunction)
  .then((result) => {
    //handle result
  })
  .catch((err) => {
    //handle error
  });

асинхронному Await

function anotherAsyncFunction() {
  //do async stuff
}

const asycnFunction = async (params) => {
  const result = await anotherAsyncFunction();
  return result;
};

События /Event Emitter

const fs = require('fs');

const filePath = './path/to/your/file';
const stream = fs.createReadStream(filePath);

stream.on('data', (data) => {
  //do something
});

stream.on('end', () => {
  //do something;
});

stream.on('error', (err) => {
  //do something;
});

Вы можете использовать эти методы в зависимости от ситуации и ваших потребностей. Я рекомендую пропустить функции обратного вызова, так как у нас есть современные способы работы в асинхронном потоке (обещания и асинхронное ожидание). Кстати, "async-await" также возвращает обещания.

Вот пример простого сервера Express JS (довольно старый синтаксис), но все еще действующий. Пожалуйста, не стесняйтесь проверять и писать вопросы:

https://github.com/roman-sachenko/express-entity-based

Вот список статей, которые я бы порекомендовал вам:

https://blog.risingstack.com/node-js-at-scale-understanding-node-js-event-loop/ https://blog.risingstack.com/mastering-async-await-in-nodejs/

Другие вопросы по тегам