मान लिया जाये कि मैं निम्न मार्कअप है:आरएक्सजेएस - रीसेट स्टेटलेस के साथ काउंटर बनाओ?
<button id="dec">-</button>
<output id="out">0</output>
<button id="inc">+</button>
<button id="res">RESET</button>
और निम्नलिखित Rx.js स्क्रिप्ट:
var total = 0
Rx.Observable.merge(
// decrement
Rx.Observable.fromEvent($('#dec'), 'click')
.map(function() { return -1 }),
// increment
Rx.Observable.fromEvent($('#inc'), 'click')
.map(function() { return +1 }),
// reset
Rx.Observable.fromEvent($('#res'), 'click')
.map(function() { return -total })
) // merge
.forEach(function(delta) {
total += delta
$('#out').text(total)
})
सब कुछ उम्मीद के रूप में काम करता है। +/- वृद्धि/काउंटर को कम करने पर क्लिक करके, 'RESET' पर क्लिक करके इसे शून्य पर वापस रीसेट कर दिया जाता है, लेकिन ... मेरे पास शीर्ष पर चर 'कुल' है। यह राज्य है, जो कि अगर मैं कार्यात्मक प्रतिक्रियाशील प्रोग्रामिंग के मूल्यों की सदस्यता लेता हूं, तो बुराई है, नहीं? यदि हां, तो मैं इसका समाधान कैसे करूं? अगर मेरे पास रीसेट बटन नहीं था, तो मैं केवल scan(seed, accumulator)
का उपयोग कर सकता था, लेकिन रीसेट बटन की कार्यक्षमता मुझे लूप के लिए फेंक रही है, ताकि यह 'स्टेटलेस' कैसे किया जा सके।
मुझे लगता है कि पहला विकल्प पढ़ने के लिए सबसे आसान है। दूसरा एक बहुत चालाक है, जवाब देने के लिए समय लेने के लिए धन्यवाद! – Jrop