Giter Club home page Giter Club logo

Comments (13)

Riim avatar Riim commented on July 19, 2024 1

v1.6.44
можно переопределять так:

cellx.Cell._nextTick = () => {/* ... */};

from cellx.

arvitaly avatar arvitaly commented on July 19, 2024

Или, может быть, придумать альтернативный синхронный способ для запуска всех отложенных расчетов?
Типа, cellx.next()?

Или, возможность замены, типа cellx.Utils.nextTick=(cb)=>cb()

from cellx.

Riim avatar Riim commented on July 19, 2024

Почему именно nextTick и полифиллы, а не обычный setTImeout, 0?

быстрее: 1, 2.

для запуска всех отложенных расчетов?

при обычной работе расчёты запускаются синхронно когда это необходимо:

let a = cellx(1);
let b = cellx(function() { return a() + 1; });
a(2);

// при чтении `b` cellx поймёт, что что-то поменялось
// и возможно эти изменения влияют на результат `b`
// и запустит расчёты изменений синхронно
console.log(b());
// => 3

Раньше ещё был Cell.forceRelease, но он как-то нигде не пригодился, разве что в тестах его использовать.

from cellx.

arvitaly avatar arvitaly commented on July 19, 2024

Беда не с ячейками. а с подписчиками

var cellx = require('cells');
var a = cellx(), test;
cellx("subscribe", () => {
    test = a();    
});
a(1);
console.assert(test === 1);

А в тестах это превращается в ужас:

var cellx = require('cellx');
var a = cellx(), test;
a("subscribe", () => {
    test = a();
});
a(1);
setTimeout(() => {
    console.assert(test === 1);
    a(2);
    setTimeout(() => {
        console.assert(test === 2);
    }, 1)
}, 1)

forceRelease не нашелся в cellx.Cell или как к нему добраться, и он только для одной ячейки или для всех?

from cellx.

arvitaly avatar arvitaly commented on July 19, 2024

Пока выкрутился так

process.nextTick = function (cb) {
    cb.apply(undefined, Array.prototype.slice.call(arguments, 1))
}

Но не очень нравится)

from cellx.

Riim avatar Riim commented on July 19, 2024

Вернул Cell.forceRelease(), v1.6.43

он только для одной ячейки или для всех?

для всех.

from cellx.

arvitaly avatar arvitaly commented on July 19, 2024

Да, супер, уже big thanks, работает! В идеале бы еще, возможность подписку делать синхронной.

from cellx.

Riim avatar Riim commented on July 19, 2024

Она и так синхронная))

from cellx.

arvitaly avatar arvitaly commented on July 19, 2024

В смысле, вызов listener'ов. Ну чтобы вот это работало в тестах:

var cellx = require('cellx');
var a = cellx(), test;
a("subscribe", () => {
    test = a();
});
a(1);
console.assert(test === 1);
a(2);
console.assert(test === 2);

Иногда нужно вручную вызов callback контролировать, тут forceRelease поможет, а иногда просто, чтобы вызывалось синхронно, тут forceRelease после каждого изменения писать - overhead.

from cellx.

Riim avatar Riim commented on July 19, 2024

Одновременно сохранить схлопывание событий и сделать cellx синхронным никак не получится, но если первое для тестов не важно, то, наверно, переопределять nextTick не так уж и плохо. Главное случайно не сделать так в рабочем приложении))

from cellx.

arvitaly avatar arvitaly commented on July 19, 2024

Ну вот если бы переопределять не в process.nextTick, а вынести наружу nextTick, который в cellx (типа cellx._nextTick = ()=>...), было бы совсем круто. А то некоторые инструменты тестирования сами используют nextTick и возникают коллизии.

from cellx.

arvitaly avatar arvitaly commented on July 19, 2024

It works! Impressive! Спасибо!

from cellx.

Riim avatar Riim commented on July 19, 2024

В 1.6.60 появился синхронный режим работы. Если не против, я попозже уберу Cell._nextTick?

from cellx.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.