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);