Что-то странное творится либо в нейминге, либо в логике. Зачем вам там рекурсия? Почему
item.name
имеет тип
Number?
Так или иначе, лучше вам будет не мутировать в асинхронных функциях какое-либо глобальное свойство. Объявляйте массив прямо там и там же работайте с ним, если его нужно прокинуть внутрь очередного вызова функции, передавайте его как аргумент.
А затем сделайте так, чтоб функция
doMassiv
вернула этот массив.
Далее уже в
showMassiv
принимайте этот массив и сохраняйте глобально, раз это вам нужно.
А еще хочу заметить, что вы забыли добавить await перед рекурсивным вызовом
this.doMassiv(item.name)
, вероятно поэтому происходит вот это:
public async showMassiv() {
await doMassiv(400)
console.log(this.massiv.length)
//здесь в консоль выводится длинна массива после первого прохода doMassiv
}
UPDATE
Как справедливо заметил Алексей в комментах, await и не будет работать внутри forEach, вот по
этим причинам. Следовательно, стоит заменить его на обычный цикл for, или написать asyncForEach, как в статье