Получение Javascript для передачи переменной по значению - PullRequest
1 голос
/ 24 апреля 2019

У меня есть два цикла while, выполняющихся одновременно с наблюдаемыми, методы выглядят так (для краткости я вычеркнул имена):

  initiateGraph(fromDate: Date, toDate: Date) {
    const graphParts = zip(
          this.dothefirstthing(fromDate, toDate),
          this.doanotherthing(fromDate, toDate)
    );
  }

оба метода берут от и до даты и помещают их в цикл while, который выглядит следующим образом:

while(from < to) {

  //do stuff

  from.setMonth(from.getMonth() + 1);
}

Проблема в том, что при запуске «doanotherthing» код не входит в цикл while, потому что даты from и to равны. Если я переключаю порядок в zip, то же самое происходит и с другим методом.

Если я не ошибаюсь, это происходит из-за того, что дата начала изменяется первым циклом while и поэтому не срабатывает при запуске второго.

Поэтому моей первой мыслью было попытаться передать значение вместо ссылки, что явно было проблемой ... теперь я не уверен

Вещи, которые я пытался обойти вокруг проблемы:

  1. установка локальных переменных в каждом методе прямо над циклом while
  2. создание класса ImmutableDate со свойством только для чтения и установка даты в графе инициации
  3. установка переменных области видимости в начальном графике

Почему это не сработает? И как я могу обойти эту проблему?

1 Ответ

3 голосов
/ 24 апреля 2019

Создать новую копию даты в начале каждого метода.

const fromDate = new Date(from)

затем используйте это в цикле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...