Функция-генератор и асинхронная функция для использования в качестве middleware в Express, аналогично Koa. (использует lei-coroutine)
npm install express-coroutine --save
const express = require('express-coroutine')(require('express'));
const app = express();
const express = require('express-coroutine')(require('express'));
const app = express();
const router = new express.Router();
app.use(router);
router.get('/', function*(req, res) {
res.send('работает!');
});
```## Получение корутин
```javascript
const coroutine = require('express-coroutine').coroutine;
Константа app
инициализируется с использованием библиотеки Express:
const app = express();
Для маршрутов /user/:id
и /user2/:id
используется генераторная функция, которая получает пользователя по его ID и отправляет его в ответ:
app.get('/user/:id', function*(req, res) {
const user = yield User.findById(req.params.id);
res.send(user);
});
Для маршрута /error
генератор выбрасывает ошибку:
app.get('/error', function*(req, res) {
throw new Error('Bang!');
});
Асинхронная версия маршрута /user2/:id
использует ключевое слово await
, чтобы получить пользователя по его ID и отправить его в ответ:
app.get('/user2/:id', async function(req, res) {
const user = await User.findById(req.params.id);
res.send(user);
});
Слушатель порта запускается следующей командой:
app.listen(8000);
Вы также можете определять несколько генераторных функций аналогично тому, как это делается в Express:
const fn = function(req, res, next) {
return new Promise((resolve, reject) => {
if (req.params.user !== 'a') return reject(new Error('Bang!'));
resolve('a');
});
};
const middleware = function*(req, res, next) {
yield fn(req, res, next);
};
const middleware2 = async function(req, res, next) {
await fn(req, res, next);
next();
};
```app.get('/:user', middleware, function*(req, res) {
res.send('работает!');
});
app.get('/:user', middleware2, async function(req, res) {
res.send('работает!');
});
Более подробный пример можно найти в файле test.js.
const coroutine = require('express-coroutine').coroutine;
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )