sno*_*lhg 2 javascript rest node.js
我正在使用NodeJS探索服务器端JavaScript并使用ExpressJS编写REST API.我的REST API用于配置设备,就像配置家庭路由器一样.我想阻止并行REST调用尝试配置客户端而不会阻止多个非配置请求.
API资源示例:
/api/config/network
/api/config/filesystem
Run Code Online (Sandbox Code Playgroud)
在我的示例API中,从概念上讲,我希望一个客户端能够配置网络资源,而另一个客户端配置文件系统资源,同时允许其他客户端查询这些资源.
我不确定如何使用JavaScripts异步编程模型来实现这一目标.我来自非异步编程背景(多线程C++).我无法解决这个问题并想知道用手可以解决这个问题的方法,如果我必须编写插件/模块怎么办?
当您的快速应用程序收到编辑配置的请求时,将项目添加到配置为并发为1 的async.js队列.这将阻止> 1并发尝试编辑远程配置.伪代码将是:
updateNetworkConfig功能var networkQueue = async.queue(updateNetworkConfig, 1);networkQueue.push(req.body.config);req.body由bodyParser连接中间件提供)您需要一堆其他管道来处理回调,并在保存配置时通知REST客户端.如果队列不为空,则由您排队呼叫还是拒绝新呼叫.
既然你坚持不学习和使用非常棒的async.js库来提高你对异步编程的流畅性并教你有价值的东西,那就是这个交易.使用这个称为变量的东西.
var updatingNetwork = false;
app.put('/api/config/network', function (req, res) {
if (updatingNetwork) {
return res.status(409).send("Try later");
}
updatingNetwork = true;
updateNetworkConfig(req.body.config, function (error) {
updatingNetwork = false;
if (error) {
return res.status(500).send(error);
}
res.status(200).send("done");
});
});
Run Code Online (Sandbox Code Playgroud)
updatingNetwork是,你知道已经有一个正在进行的更新,要么将其排队,要么拒绝它.| 归档时间: |
|
| 查看次数: |
1146 次 |
| 最近记录: |