Uso el horario para crear una clase llamada Horario, el código está a continuación:
import * as schedule from "node-schedule"; import { switchStationExecuteStore } from '../controller/SwitchStation' export class Schedule { executionId: any; time: any; deviceParams:any nodeType: any; nodeName: any; constructor(time,executionId,nodeName,nodeType,deviceParams) { this.time = time this.executionId = executionId this.deviceParams = deviceParams this.nodeName = nodeName this.nodeType = nodeType } startJob() { console.log(this.deviceParams.deviceId) schedule.scheduleJob(this.time, function (executionId,nodeName,nodeType,deviceParams) { switchStationExecuteStore[executionId].toExecuteDevice(nodeName, nodeType, deviceParams) }.bind(null,this.executionId,this.nodeName, this.nodeType, this.deviceParams)) } }Y en otro archivo, uso la clase Schedule, el código es
const that = this const job = new Schedule(cornTime,this.executionId,nodeName, nodeType, deviceParams) job.startJob()cuando el código se ejecutará al mismo tiempo y se ejecutará dos veces con diferentes parámetros de dispositivo, los parámetros de dispositivo posteriores sobrescribirán el primero, por lo que en la función toExecuteDevice siempre obtendré el valor posterior.
Me pregunto qué está mal en mi código. y como puedo hacer para solucionarlo muchas gracias