मैं प्रतिक्रियाशील प्रोग्रामिंग और cycle.js के साथ घूमने के लिए नया हूं, this tutorial से बॉक्स का पालन करने के लिए कौन सा कार्यान्वित करने का प्रयास कर रहा हूं। लेकिन मुझे समझ में आया कि उचित कार्यान्वयन (और सीखने के उद्देश्यों) के लिए मेरे पास डेटा का एक टुकड़ा नहीं है: पूर्ण उपयोगकर्ता नाम। मैं अनुक्रमिक रूप से उपयोगकर्ताओं को प्राप्त कर सकता हूं और फिर सर्वर से पूर्ण उपयोगकर्ता डेटा प्राप्त कर सकता हूं। अनिवार्य शैली में मैं ऐसा कुछ करूंगा:Cycle.js में अनुक्रमिक रूप से डेटा का अनुरोध कैसे करें?
fetch(`https://api.github.com/users`)
.then(data => data.json())
.then(users => fetch(users[0].url))
.then(data => data.json())
.then(/* ... work with data ... */)
लेकिन मैं इसे चक्र में कैसे कर सकता हूं? मैं इस तरह चालक लाने उपयोग कर रहा हूँ और कोशिश कर कुछ:
function main({ DOM, HTTP }) {
const users = `https://api.github.com/users`;
const refresh$ = DOM.select(`.refresh`).events(`click`)
const response$ = getJSON({ key: `users` }, HTTP)
const userUrl$ = response$
.map(users => ({
url: R.prop(`url`, R.head(users)),
key: `user`,
}))
.startWith(null)
const request$ = refresh$
.startWith(`initial`)
.map(_ => ({
url: `${users}?since=${random(500)}`,
key: `users`,
}))
.merge(userUrl$)
const dom$ = ...
return {
DOM: dom$,
HTTP: request$,
};
}
जहां getJSON
function getJSON(by, requests$) {
const type = capitalize(firstKey(by));
return requests$
[`by${type}`](firstVal(by))
.mergeAll()
.flatMap(res => res.json());
है और मैं हमेशा की तरह कुछ गुप्त (मेरे लिए) त्रुटि हो रही है: TypeError: Already read
। इसका क्या अर्थ है और मैं इसे कैसे ठीक से संभाल सकता हूं?
धन्यवाद, यह काम करता है! लेकिन यह अभी भी मेरे लिए जादू का प्रतीत होता है। क्या मैं सही ढंग से समझता हूं कि 'userRequest $' कुछ भी उत्सर्जित करने के लिए 'सूची रिस्पॉन्स $' के लिए इंतजार कर रहा है और फिर श्रृंखला में अगला क्या है? – kibin
सही। यह 'listResponse $ 'से एक नए अनुरोध पर एक ईवेंट को मानचित्र करता है। –
समझा। फिर से धन्यवाद, मुझे वास्तव में cycle.js पसंद है और इसमें खोदना जारी रहेगा। – kibin