Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Одно вычисление а не два #32

Closed
DDD329 opened this issue Jan 10, 2017 · 2 comments
Closed

Одно вычисление а не два #32

DDD329 opened this issue Jan 10, 2017 · 2 comments

Comments

@DDD329
Copy link

DDD329 commented Jan 10, 2017

Привет! Ты не мог ли немного пояснить за счет чего достигается след. фича: есть три переменных a,b,c, где c = a() + b(); Если мы меняем a и b, то c вычисляется единожды.

@Riim
Copy link
Owner

Riim commented Jan 10, 2017

Привет. При изменении a вычисления c не происходит, вместо этого a добавляется в коллекцию изменённых ячеек и ставиться nextTick (setTimeout 0) в котором произойдёт вычисление. Дальше меняется b, он тоже добавляется в ту же коллекцию, nextTick уже не ставится, тк один уже есть. Всё это происходит здесь. Дальше срабатывает nextTick в котором всё считается один раз. Есть ситуации в которых сделанные изменения нужны немедленно, например:

let a = cellx(1);
let b = cellx(2);
let c = cellx(() => a() + b());

a(5);
console.log(c()); // здесь расчёт изменений нужен ещё до срабатывания nextTick
b(10);
console.log(c()); // и здесь

поэтому методы создающие такие ситуации (get, on, off, disable) запускают расчёт синхронно и в данном примере c посчитается два раза.

@DDD329
Copy link
Author

DDD329 commented Jan 11, 2017

Спасибо за ответ.
Действительно хорошая библиотека, мне она очень понравилась!
Мне понравился API с помощью которого создаются зависимые переменные.

@Riim Riim closed this as completed Jan 21, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants