JSFiddle - React, Tailwind, and code Playground
by ifandelse
HTML
<script src="https://raw.github.com/documentcloud/underscore/master/underscore.js"></script>
<script src="https://raw.github.com/ifandelse/postal.js/master/lib/standard/postal.js"></script>
<script src="https://raw.github.com/ifandelse/postal.js/master/lib/standard/postal.diagnostics.js"></script>
<div>
Example - using ignoreDuplicates()
<ul class="results" id="example4"></ul>
</div>
CSS
div {
font-family: Tahoma, Arial;
font-size: 10pt;
}
.results {
margin-bottom:20px;
padding: 10px;
border-top: 1pt solid lightsteelblue;
border-bottom: 1pt solid lightsteelblue;
}
JavaScript
var total = 0;
var c = postal.channel('#.selected');
var sub = c.subscribe(function(item) {
total += item.price;
}).withConstraint(
(function() {
var _msgs = [];
return function(x) {
var result = !_.any(_msgs, function(msg) {
return _.isEqual(msg, x);
});
_msgs.push(x);
return result;
}
})()
);
postal.publish('shirt.selected', { price: 10 });
postal.publish('#.selected', { price: 15 });
postal.publish('shoes.selected', { price: 20 });
//duplicate is ignored
postal.publish('shirt.selected', { price: 10 });
//total price is 10 + 15 + 20 = 45
console.log(total);