Обратите внимание, что в случае отражения вы получаете NoSuchMethodException
, а с неотражающим кодом вы получаете NoSuchMethodError
. Я, как правило, смотрю в самых разных местах, когда сталкиваюсь с одним против другого.
Ты очень близко. У вас просто ошибка в вашем счетчике циклов. Измените это:
for(i=1; i<5; i++){
на это:
for(let i=1; i<5; i++){
С вашим существующим кодом i
неявно превращается в глобальный var
. Ваш код проходит, настраивая цепочку обещаний. Затем, когда обещания начинают разрешаться, i
теперь равно 5, и поэтому все, кроме первого обещания, заканчивают тем, что используют 5 вместо ожидаемого числа.
Если вместо этого вы используете let
, то каждый раз через цикл будет новая привязка переменной. Таким образом, каждый вызов MyClass (i) будет видеть свой собственный правильный номер.