Size: a a a

2020 October 13

МТ

Марк Танащук... in Svelte [svelt]
Марк Танащук
$: ->secondName<-, func2()
$: name, func()
Здесь я вижу 4 зависимости.

Две - переменные, две функции.

Функции менятся не будут, так что когда будут дергаться только переменные, функции будут исполнятся.

Но почему то первая переменная(secondName) реактивного выражения после изменения не дергает выражение, потому что проверялась компилятором до этого изменения
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Марк Танащук
Здесь я вижу 4 зависимости.

Две - переменные, две функции.

Функции менятся не будут, так что когда будут дергаться только переменные, функции будут исполнятся.

Но почему то первая переменная(secondName) реактивного выражения после изменения не дергает выражение, потому что проверялась компилятором до этого изменения
я тебя другое попросил сделать
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
ты должен выставить эти выражения в таком порядке, чтобы они сработали друг за другом таким образом, чтобы все изменения применились
источник

МТ

Марк Танащук... in Svelte [svelt]
Pavel 🦇 Malyshev
ты должен выставить эти выражения в таком порядке, чтобы они сработали друг за другом таким образом, чтобы все изменения применились
Вот собственно
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
проблема в том, что в этом коде не, компилятор, не видишь как name зависит от secondName
источник

МТ

Марк Танащук... in Svelte [svelt]
Как мне кажется формулировка должна быть не "Компилятор просто смотрит на выражения", а "Компилятор просто смотрит на выражения сверху вниз, по очереди не возвращаясь к тем, что он посмотрел"
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Марк Танащук
Как мне кажется формулировка должна быть не "Компилятор просто смотрит на выражения", а "Компилятор просто смотрит на выражения сверху вниз, по очереди не возвращаясь к тем, что он посмотрел"
нет, ты не понял
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
он как раз выстраивает выражения в топологическом порядке, если понимает как они зависят друг от друга
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
другое дело, что тут он не видит этой зависимости
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
поэтому в данном случае порядок реального объявления оказался важным
источник

МТ

Марк Танащук... in Svelte [svelt]
И он не может выстроить порядок исполнения
источник

МТ

Марк Танащук... in Svelte [svelt]
Марк Танащук
Как мне кажется формулировка должна быть не "Компилятор просто смотрит на выражения", а "Компилятор просто смотрит на выражения сверху вниз, по очереди не возвращаясь к тем, что он посмотрел"
Вот почему мне кажется в данном случае корректная формулировка - вторая
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Pavel 🦇 Malyshev
дык там изменение переменной не отмечено меткой
да, он не смог выставить выражение secondName ниже чем name потому что не понял ,что выражение с name меняет secondName
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Марк Танащук
Вот почему мне кажется в данном случае корректная формулировка - вторая
но ведь он не смотри по очереди
источник

МТ

Марк Танащук... in Svelte [svelt]
Вот бы можно было вручную выставить очередность исполнения выражений🤔
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Марк Танащук
Вот бы можно было вручную выставить очередность исполнения выражений🤔
так ты можешь это сделать, написав выражения в нужном порядке
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Pavel 🦇 Malyshev
Короче правило такое, если хочешь вытащить изменение стейта наружу, то: 1) сам следишь за порядком выполнения 2) если не хочешь следить, то вручную перекидываешь изменение этого стейта на следующий тик (юзаешь await tick() перед присвоением)
вот тут я все резюмировал
источник

МТ

Марк Танащук... in Svelte [svelt]
Pavel 🦇 Malyshev
так ты можешь это сделать, написав выражения в нужном порядке
Разбирать логику приложения, чтобы понять какие там порядки априори сложнее
источник

МТ

Марк Танащук... in Svelte [svelt]
(очень) ugly синтаксис, но вот бы как то так:

$:2 console.log(x)
$:1 console.log(y)
$:5 console.log(i)
источник

МТ

Марк Танащук... in Svelte [svelt]
Или параметром передавая, уж хз как правильнее и логичнее будет.
источник