Estoy tratando de hacer una matriz de calendario en Node.js. este es mi main.mts :
import dayjs from 'dayjs'; import customParseFormat from 'dayjs/plugin/customParseFormat'; dayjs.extend(customParseFormat); function nextDay(d: string) { const e = dayjs(d, 'MMM D, YYYY (ddd)'); const f = dayjs(e).add(1, 'day'); return dayjs(f).format('MMM D, YYYY (ddd)'); } export class CalendarEdit { private cal: string[] = []; constructor(d: string) { this.cal.push(d); this.init(365).catch(err => { throw err; }); } public addDate() { const d = this.cal[this.cal.length - 1]; const e = nextDay(d); this.cal.push(e); } private init(j: number) { this.addDate(); if (j > 1) this.init(j - 1); } public printCal() { console.log(this.cal); } } pero el resultado dice que cada elemento en la matriz cal es el mismo, que tiene que ser el último día del calendario.
Sé que JavaScript es básicamente un lenguaje sin bloqueo, pero no puedo encontrar la manera.
Intenté devoluciones de llamada y promesas, y async , await pares. pero ninguno de ellos funcionó.
Lo busqué en Google pero no puedo encontrar una solución que funcione en mi caso. alguien sabe la respuesta?
EDITAR : Llamo a CalendarEdit en mi index.mts así:
import { CalendarEdit } from './main'; let cal = new CalendarEdit('Jun 1, 2022 (Wed)'); cal.printCal();Edité mi addDate() a esto y resolvió el error:
public addDate() { const d = nextDay(this.cal[this.cal.length - 1]); this.cal.push(d); }