Tengo una entrada de base de datos que tiene los siguientes datos:
{ _id:"fdjshbjds564564sfsdf", shipmentCreationTime:"12:17 AM" shipmentExpiryTime:"12:32 AM" }Lo que quiero hacer es crear un temporizador desde el front-end (ReactJS) sobre la base del tiempo de creación y vencimiento proporcionado en el conjunto de datos. Y una vez que el temporizador llega a cero, quiero ejecutar una llamada API al backend.
La función es la siguiente:
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 }) } }¿Qué puedo hacer para lograr esto?
Puede lograr esto de diferentes maneras, una de ellas es registrar una devolución de llamada y usar la función setTimout() según su conjunto de datos, luego puede ejecutar la solicitud dentro de esta función
no entendí muy bien.
¿Quieres crear una cuenta regresiva o un temporizador ?
Si desea crear un Countdown , guarde el valor en un estado y llame a su API cuando sea cero.
Pero si desea crear un temporizador, le sugiero que use los documentos de Promise .
const tiemr = () => { return new Promise(done => { setTimeout(() => { done(callYourAPI()); }, 5000); // after 5s }) }