Так что это тот случай, когда имеет смысл отделить ваши данные от слоя просмотра. Обращаться к обновлениям проще, если у вас есть единственный источник правды, который вы обновляете, вместо того, чтобы пытаться обновлять свои блоки напрямую.
Итак, когда вы получаете обновление, снимите его с this.flights.data
вместо чанка, а затем заставьте vue пересчитать ваши чанки. Это сохраняет ваш исходный массив data
в качестве единственного источника истины, и вы каждый раз обновляете фрагменты из него для своего просмотра.
#perform:
не похож на eval ()
. Проблема с eval ()
(в любом случае с точки зрения производительности) заключается в том, что он должен компилировать код, который вы отправляете во время выполнения, что является очень медленной операцией. #perform:
Smalltalk, с другой стороны, эквивалентно sendy (1142938) Руби или Objective-C executeSelector:
(на самом деле оба эти языка были сильно вдохновлен Smalltalk). Такие языки уже ищут методы, основываясь на их имени - #perform:
просто позволяет указать имя во время выполнения, а не во время записи. Он не должен анализировать какой-либо синтаксис или компилировать что-либо вроде eval ()
.
Это будет немного медленнее (стоимость как минимум одного дополнительного вызова метода), но это не так. t eval ()
. Кроме того, варианты с большим количеством аргументов не должны показывать никакой разницы в скорости по сравнению с простым исполнением : чем угодно
. Я не могу говорить с таким большим опытом конкретно о Squeak, но именно так он обычно работает.