Ответ 1
Просто вызовите res.send
внутри setTimeout:
setTimeout((function() {res.send(items)}), 2000);
Im использует экспресс с node.js и тестирует определенные маршруты. Я делаю этот tute на http://coenraets.org/blog/2012/10/creating-a-rest-api-using-node-js-express-and-mongodb/
Я вызываю http://localhost:3000/wines
через ajax (содержимое не имеет значения). Но я хочу проверить задержку. Могу ли я сделать что-то вроде экспресс-ответа через 2 секунды? (Я хочу, чтобы имитировать загрузчик ajax, и я запускаю на localhost, поэтому моя латентность почти равна нулю)
Просто вызовите res.send
внутри setTimeout:
setTimeout((function() {res.send(items)}), 2000);
Использовать в качестве промежуточного программного обеспечения для всех ваших запросов
app.use(function(req,res,next){setTimeout(next,1000)});
Попробуйте connect-pause модуль. Это добавляет задержку для всех или только некоторых маршрутов в вашем приложении.
Чтобы применить его глобально по всем запросам, вы можете использовать следующий код:
app.use( ( req, res, next ) => {
setTimeout(next, Math.floor( ( Math.random() * 2000 ) + 100 ) );
});
Значения времени:
Макс = 2000 (сорт.... мин. добавляется так на самом деле его 2100)
Мин = 100
Вы также можете просто написать свой собственный общий обработчик задержки, используя Promise или callback (используя q в этом случае):
pause.js:
var q = require('q');
function pause(time) {
var deferred = q.defer();
// if the supplied time value is not a number,
// set it to 0,
// else use supplied value
time = isNaN(time) ? 0 : time;
// Logging that this function has been called,
// just in case you forgot about a pause() you added somewhere,
// and you think your code is just running super-slow :)
console.log('pause()-ing for ' + time + ' milliseconds');
setTimeout(function () {
deferred.resolve();
}, time);
return deferred.promise;
}
module.exports = pause;
затем используйте его, как бы вы хотели:
server.js:
var pause = require('./pause');
router.get('/items', function (req, res) {
var items = [];
pause(2000)
.then(function () {
res.send(items)
});
});