Express.js如何在处理另一个请求时阻止该请求



如果目前在express.js中处理另一个请求,是否有方法阻止请求。我有一个类似的代码

try {
if (currency == 'BTC') {
let options = {
symbol: symbol,
side: 'BUY',
type: 'MARKET',
quantity: amount,
timestamp: Date.now()
}
let order = await api.placeOrder(options);
if (order.status == 200) {
res.status(200).send({ message: 'Order successfully placed' });
} else {
res.status(500).send({ message: 'Failed to place order' });
}
} else if (currency == 'DASH') {
let options = {
symbol: 'DASHUSDT',
side: 'BUY',
type: 'MARKET',
quantity: amount,
timestamp: Date.now()
}
let order = await api.placeOrder(options);
if (order.status == 200) {
res.status(200).send({ message: 'Order successfully placed' });
} else {
res.status(500).send({ message: 'Failed to place order' });
}
} else {
res.status(400).send({ message: 'Invalid currency' });
}
} catch (err) {
console.log(err);
res.status(500).send({ message: 'Internal server error' });
}

这基本上允许用户通过网站购买比特币,但问题是,有时一个账户可以被两个人以上使用,如果他们同时按下购买按钮,就会下两次订单。如果目前正在处理订单,有没有办法禁止其他用户下订单?

这是一个非常粗糙的例子,它可能没有考虑到您的所有需求,但。。。也许会?

const locks = {};
app.post('route', function(req, res) {
const routeLockKey = 'route:' + user.id;
if (locks[routeLockKey]) return res.error; // error here somewow
// if we got here, the route isn't locked for this user
locks[routeLockKey] = true;
try {
// your code here
} catch(e) {
// error handling here
} finally {
delete locks[routeLockKey];
} 

});

最新更新