Включает ли событие Network.loadingFinished `Network.requestServedFromCache` в Chrome DevTools?

Это связано с точкой, в которой d связан. Лямбда-функции все указывают на переменную d, а не на текущее значение , поэтому, когда вы обновляете d в следующей итерации, это обновление просматривается через все ваши функции.

Для более простого примера:

funcs = []
for x in [1,2,3]:
  funcs.append(lambda: x)

for f in funcs:
  print f()

# output:
3
3
3

Вы можете обойти это, добавив дополнительную функцию, например:

def makeFunc(x):
  return lambda: x

funcs = []
for x in [1,2,3]:
  funcs.append(makeFunc(x))

for f in funcs:
  print f()

# output:
1
2
3

Вы также можете зафиксировать область видимости внутри выражения лямбда

lambda bound_x=x: bound_x

. Однако в целом это не очень хорошая практика, поскольку вы изменили подпись своей функции.

0
задан Nakilon 29 March 2019 в 15:44
поделиться