一旦计时器运行为零,就执行一个函数
Posted
技术标签:
【中文标题】一旦计时器运行为零,就执行一个函数【英文标题】:Execute a function once the timer runs zero 【发布时间】:2021-12-02 17:26:06 【问题描述】:我有一个包含以下数据的数据库条目:
_id:"fdjshbjds564564sfsdf",
shipmentCreationTime:"12:17 AM"
shipmentExpiryTime:"12:32 AM"
我要做的是根据数据集中提供的创建和到期时间从前端(ReactJS)创建一个计时器。一旦计时器运行为零,我想执行一个 API 调用回后端。
函数如下:
exports.expireShipmentOffer = async (req,res) =>
const shipmentOfferId = req.body;
try
const updatedOffer = await ShipmentOrder.findOneAndUpdate(_id: shipmentOfferId , $set:status:'Expired' , new: true)
const newNotification = await Notification(accountId: updatedOffer.accountId , notificationHeader: ` Shipment Order Expired ` , notificationMessage:`Your Shipment Request $shipmentOfferId has been expired due to no response from the carrier` , timeAndDate : moment().format('LLL'), actionPath:`/shipmentOffer/$updatedOffer._id`)
await newNotification.save();
res.json(
status: 200,
message: updatedOffer
)
catch (error)
res.json(
status: 500,
message:error.message
)
我能做些什么来实现这一目标?
【问题讨论】:
【参考方案1】:你可以通过不同的方式实现这一点,其中一种是注册一个回调并根据你的数据集使用 setTimout() 函数,然后你可以在这个函数中执行请求
【讨论】:
【参考方案2】:我不太了解。
您要创建倒计时或计时器吗?
如果您想创建倒计时,请将值保存在一个状态中,并在它为零时调用您的 API。
但是如果你想创建一个计时器,我建议你使用Promise docs
const tiemr = () =>
return new Promise(done =>
setTimeout(() =>
done(callYourAPI());
, 5000); // after 5s
)
【讨论】:
以上是关于一旦计时器运行为零,就执行一个函数的主要内容,如果未能解决你的问题,请参考以下文章
一旦发生另一个事件,我的 libevent 计时器就会停止……这正常吗?