私はリアクションプログラミングとcycle.jsで対処し、this tutorialからボックスに従う人を実装しようとしています。しかし、私は、適切な実装(および学習目的)のために、1つのデータがないことを理解しました:完全なユーザー名。私は順番にユーザーを取得し、次にサーバーからフルユーザーデータを取得することで取得できます。命令的なスタイルで私はこのような何かをするでしょう: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 ... */)
しかし私はどのようにそれを周期的に行うのですか? 私はドライバーをフェッチ使用して、このような何かしようとしている:TypeError: Already read
:getJSON
は
function getJSON(by, requests$) {
const type = capitalize(firstKey(by));
return requests$
[`by${type}`](firstVal(by))
.mergeAll()
.flatMap(res => res.json());
であると私はいつものようないくつかの不可解な(私にとっては)エラーを取得しています
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$,
};
}
を。それはどういう意味ですか、どうすれば適切に処理できますか?
ありがとうございます!でもそれはまだ私には魔法のようだ。私は、 'userRequest $'が 'listResponse $'が何かを放射するのを待ってからチェーン内の次のことをするだけであることを正しく理解していますか? – kibin
修正します。 'listResponse $'のイベントを新しいリクエストにマップします。 –
。もう一度おねがいします。私は本当にcycle.jsが好きで、引き続きそれを掘り下げていきます。 – kibin