Создать успокоительный 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/