Работайте быстрее с Neo-async и NodeJs
Привет, ребята,
Это отклонение от обычного учебника по внешнему интерфейсу, который я обычно написал, это произошло из-за моей способности всегда хотеть узнать больше, и это помогло мне до сих пор.
Таким образом, в основном это руководство предназначено для сравнения неоасинхронных и ваших обычных асинхронных вызовов и для того, чтобы показать, какой из них быстрее и надежнее.
Считается, что Neo-Async используется в качестве замены Async, он почти полностью покрывает его функциональность и работает быстрее. — Неоасинхронный
Neo-async имеет несколько функций, и все они великолепны, но мне больше всего нравятся Waterfall, Auto и Parallel.
Давайте погрузимся прямо в.
Чтобы использовать Neo-async, вам нужно будет установить его.
npm install --save neo-async
затем использовать его в проекте довольно просто, все, что вам нужно сделать, это импортировать его в нужный вам файл, используя:
var async = require('neo-async');
теперь, сделав это, вы получите доступ ко всем неоасинхронным функциям.
Например,
Авто:
var async = require('neo-async');
let user, compared;
async.auto({
users: async (callback) => {
try {
user = await Users.findOne({ email: data.email });
console.log(user);
if (user.length < 1) {
return ResponseService.json(400, res, "Invalid login details")
} else {
callback(null, user);
}
} catch (err) {
return ResponseService.json(400, res, "Invalid login details")
}
},
comparePassword: ['users', async (results, callback) => {
console.log(results);
try {
compared = await Users.comparePassword(data.password, results.users);
console.log(compared)
if (!compared) {
return ResponseService.json(400, res, "Invalid login details")
} else {
callback(null, compared);
}
} catch (err) {
return ResponseService.json(403, res, "Forbidden")
}
}],
tokenGenerator: ['users', 'comparePassword', (results, callback) => {
const token = TokenService.generateToken(user);
const sql = "UPDATE `users` SET `access_token` = ?, `last_logged_in` = ?, `ipaddress` = ? WHERE `email` = ?";
Users.query(sql, [token, new Date(), requestIp.getClientIp(req), user.email], (err, updatedUser) => {
if (err) {
console.log(err);
callback(err);
} else {
console.log(updatedUser);
callback(null, updatedUser);
}
});
}]
}, (err, results) => {
if (err) {
return ResponseService.json(400, res, "Something went wrong");
} else {
return ResponseService.json(200, res, "Successfully signed in", results.tokenGenerator[0]);
}
});
Приведенный выше код представляет собой базовый процесс входа в систему, который включает проверку существования электронной почты, затем проверку правильности хешированного пароля, затем создание токена для сеанса входа и обновление базы данных токеном доступа и последним входом пользователя в систему.
Чтобы сделать выше без неоасинхронный или асинхронный, вам понадобятся вложенные коды (то есть код внутри кода), которые иногда могут быть грязными и медленными.
Но неоасинхронный украсил и ускорил процесс.
Ниже наглядная иллюстрация разницы во времени отклика между неоасинхронным и обычным вложенным асинхронным вложенным кодом.
На приведенных выше рисунках показана разница во времени отклика между наличием неоасинхронности и отсутствием неоасинхронности. Мы заметим, что тот, у которого есть неоасинхронизация (тот, что слева), имеет время отклика 1,53 с, а время отклика без него — 2,67 с. Это может показаться не таким уж большим, но когда запрос отправляется серверу, время доставки ответа сильно влияет на взаимодействие с пользователем.
Представьте себе использование без кэширования данных, и это все еще быстро, представьте, что произойдет, если вы кешируете свои данные и одновременно используете неоасинхронность. Это сногсшибательно
Спасибо за чтение.