gpt4 book ai didi

javascript - 使用 Express 在 node.js 中模拟阻塞函数

转载 作者:行者123 更新时间:2023-11-30 08:17:41 31 4
gpt4 key购买 nike

为了测试 node.js 中有关同步与异步函数的一些概念,我想创建一个模拟阻塞函数的示例,我该如何实现?更具体地说,我想证明使用 Express 我可以实现两个 GET 请求,其中第一个请求在并行执行时阻止第二个请求。以下示例中的 blockingFunctionHere 应该如何显示:

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/1', function(req, res, next) {

blockingFunctionHere(); // emulate a blocking function for some seconds, let's say 10 seconds

res.render('index', { title: 'Coming from request #1' });
});

router.get('/2', function(req, res, next) {

res.render('index', { title: 'Coming from request #2' })
});

module.exports = router;

最佳答案

我会使用 while 来做到这一点检查调用函数的时间与当前迭代时间之间的时间差的循环。

只要时差不超过传递的delay,就一直循环。由于它是一个同步循环,Event Loop在循环期间会被阻塞。

const block = delay => {
const now = (new Date()).getTime()

while (((new Date()).getTime() - now) <= delay) {
// do nothing
}
}

block(3000) // 3 seconds
console.log('end')

不要指望这是时间准确的。这会模拟通常不需要的“阻塞”行为,持续 大约 3 秒。

关于javascript - 使用 Express 在 node.js 中模拟阻塞函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59375611/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com