我使用express与node.js,并测试某些路由.我正在http://coenraets.org/blog/2012/10/creating-a-rest-api-using-node-js-express-and-mongodb/做这个问题.
我调用http://localhost:3000/winesvia ajax(内容无所谓).但我想测试延迟.我可以在2秒后做一些像快速回应的事吗?(我想模拟ajax加载器,我在localhost上运行所以我的延迟几乎为零)
mag*_*cnx 71
用作所有请求的中间件
app.use(function(req,res,next){setTimeout(next,1000)});
Run Code Online (Sandbox Code Playgroud)
Dav*_*don 43
只需拨打res.send一个内部的setTimeout:
setTimeout((function() {res.send(items)}), 2000);
Run Code Online (Sandbox Code Playgroud)
Aza*_*rus 10
要将其全局应用于所有请求,您可以使用以下代码:
app.use( ( req, res, next ) => {
setTimeout(next, Math.floor( ( Math.random() * 2000 ) + 100 ) );
});
Run Code Online (Sandbox Code Playgroud)
时间值为:
Max = 2000(有点......添加了最小值,所以实际上是 2100)
最小值 = 100
app.get('/fakeDelay', function(req,res){
let ms = req.query.t;
ms = (ms>5000 || isNaN(ms)) ? 1000 : parseInt(ms);
setTimeout((()=> res.status(200).send({delay:ms})), ms);
})
Run Code Online (Sandbox Code Playgroud)
然后请求 URL:http://localhost/fakeDelay/?t=2000 (本例中最大 5000 毫秒,默认值为 1000 毫秒)
更新: 使用 Promise。函数“sleep”可用于延迟任何 Express 响应或其他异步函数。
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
app.get('/fakeDelay', async (req, res) => {
await sleep(500);
res.send([])
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12642 次 |
| 最近记录: |