Comments (4)
unsubscribe
вторым параметром должен принимать обработчик, который ранее был использован в subscribe
:
test = cellx();
let listener = function(err, evt) {
console.log("evt", evt);
};
test("subscribe", listener)
test("unsubscribe", listener)
from cellx.
Ага, понял. Так работает.
Но из справки это не очевидно ибо:
user.fullName('subscribe', function(err, evt) {
if (err) {
//
} else {
//
}
});
тут нет обработчика и сразу передаётся функция. Стоит её тогда подправить.
Если попробовать передать как есть
test = cellx();
test("subscribe", function(err, evt) {
console.log("evt", evt);
})
test("unsubscribe", function(err, evt) {
console.log("evt", evt);
})
то отписка не произойдёт, то есть получается от такой подписки уже нормальным способом не отписаться, об этом тоже стоит написать в справке.
Зачем нужно именно обработчик передавать? Это сделано в случае когда их несколько подписано разных? Но почему тогда если там указывается 0 не отписать сразу все обработчики?
from cellx.
то есть получается от такой подписки уже нормальным способом не отписаться
ну да, только через dispose
, тут сделано однотипно с нативными addEventListener
и removeEventListener
, так вполне привычно для тех кто постоянно на js пишет. Доку я скорей всего буду полностью переписывать, сейчас в ней в основном описана функция cellx
, которая является обёрткой над классом cellx.Cell
. Такая обёртка имела смысл когда в языке не было ни аксессоров, ни декораторов, сейчас она больше вопросов создаёт, тот же 0
в dispose
-- вообще костыль, он передаётся чтобы получалось два параметра, один параметр расценивается как запись в ячейку.
В общем, сейчас лучше вместо:
let valueCell = cellx(1);
valueCell('subscribe', listener);
valueCell('addChangeListener', listener);
valueCell(5);
valueCell('dispose', 0);
работать напрямую с cellx.Cell
:
let valueCell = new cellx.Cell(1);
valueCell.subscribe(listener);
valueCell.on('change', listener);
valueCell.set(5);
valueCell.dispose();
или через cellx.define
создавать наблюдаемые поля в классах:
class Test extends cellx.EventEmitter {
constructor() {
cellx.define(this, {
value: 1
});
this.on('change:value', this._onValueChange, this);
this.value = 5;
}
}
или если доступны декораторы (typescript, babel):
import { observable, computed } from 'cellx-decorators'; // https://www.npmjs.com/package/cellx-decorators
class Test extends cellx.EventEmitter {
@observable value = 1;
constructor() {
this.on('change:value', this._onValueChange, this);
this.value = 5;
}
}
from cellx.
Понял, спасибо.
from cellx.
Related Issues (20)
- Guidance requested
- Untranslated part of README HOT 1
- Одно вычисление а не два HOT 2
- Please include Sodium FRP in your PERF
- Как сделать подписку с учётом будущих изменений? HOT 6
- dispose throws unexpectedly HOT 1
- why a varargs/overloaded API? HOT 2
- consider switching to Rollup HOT 5
- Good way to implement auto-run? HOT 3
- create-react-app TypeError: undefined has no properties _on EventEmitter.js:102 HOT 14
- Error rethrowed only once HOT 12
- Зачем `let reactions = this._reactions;` HOT 1
- Ожидание корректного значения HOT 1
- Почему dep._addReaction после pull делает ячейку DIRTY? HOT 1
- _deactivate() не чистит this._dependencies HOT 5
- После fail executon всея ячейки дерева state ACTUAL HOT 4
- Async cell HOT 3
- value instanceof EventEmitter. Подписка в конструкторе HOT 1
- "effects" in cellx HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cellx.