如何在Cycle.js中顺序请求数据?

2024-01-01

我是响应式编程的新手,正在尝试使用cycle.js,试图实现谁关注框本教程 https://gist.github.com/staltz/868e7e9bc2a7b8c1f754。但我知道,为了正确实施(和学习目的),我没有一项数据:完整的用户名。我可以通过顺序获取用户,然后从服务器获取完整的用户数据来获取它。在命令式风格中,我会做这样的事情:

fetch(`https://api.github.com/users`)
  .then(data => data.json())
  .then(users => fetch(users[0].url))
  .then(data => data.json())
  .then(/* ... work with data ... */)

但我该如何循环呢? 我正在使用 fetch 驱动程序并尝试这样的操作:

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$,
  };
}

where getJSON is

function getJSON(by, requests$) {
  const type = capitalize(firstKey(by));

  return requests$
    [`by${type}`](firstVal(by))
    .mergeAll()
    .flatMap(res => res.json());

我总是遇到一些(对我来说)神秘的错误,例如:TypeError: Already read。这是什么意思以及如何正确处理?


你们非常接近。你只需要删除startWith(null)作为请求,并获取第二个响应(您缺少该响应的 getJSON)。

function main({ DOM, HTTP }) {
  const usersAPIPath = `https://api.github.com/users`;

  const refresh$ = DOM.select(`.refresh`).events(`click`);

  const userResponse$ = getJSON({ key: `user` }, HTTP);
  const listResponse$ = getJSON({ key: `users` }, HTTP);

  const userRequest$ = listResponse$
    .map(users => ({
      url: R.prop(`url`, R.head(users)),
      key: `user`,
    }));

  const listRequest$ = refresh$
    .startWith(`initial`)
    .map(_ => ({
      url: `${usersAPIPath}?since=${Math.round(Math.random()*500)}`,
      key: `users`,
    }));

  const dom$ = userResponse$.map(res => h('div', JSON.stringify(res)));

  return {
    DOM: dom$,
    HTTP: listRequest$.merge(userRequest$),
  };
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Cycle.js中顺序请求数据? 的相关文章

  • createHTMLNotification() 替换

    我创建了一个 Chrome 扩展程序 其中使用createHTMLNotification 在所有内容之上显示一个窗口 然而 从 Chrome 28 开始 谷歌决定放弃createHTMLNotification 完全 为什么 谷歌 为什么
  • 将 Javascript 对象的属性从 string 更改为 int

    我有一个对象数组 每个对象具有三个属性 年份 总计 人均 例子 0 Object per capita 125 8 total 1007 2 year 2009 这些属性是字符串 我想创建一个循环来遍历数组并将它们转换为 int 我尝试了以
  • 在 HTML5 Javascript 中将 BlobBuilder 转换为字符串

    function blobToString blob var reader new FileReader var d reader onloadend function d callback reader result console lo
  • Jquery 悬停卡

    我在用着http designwithpc com Plugins Hovercard http designwithpc com Plugins Hovercard 但我不知道如何在悬停卡上声明 var 每个工作描述都有自己的 ID 当悬
  • 位置特征检测:固定

    我正在尝试找到一个脚本来检测设备是否放置position fixed元素相对于视口而不是整个文档 目前 标准桌面浏览器和 Mobile Safari 适用于 iOS 5 都是这样做的 而 Android 设备则相对于整个文档放置固定元素 我
  • nodejs (libuv) 事件循环是否在一个阶段(队列)中执行所有回调,然后再进入下一阶段或以循环方式运行?

    我正在研究 Node js 中 libuv 提供的事件循环 我遇到了关注 Deepal Jayasekara 的博客 https blog insiderattack net event loop and the big picture n
  • 导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

    我在尝试使用以下命令创建响应式菜单或下拉按钮时遇到问题Bootstrap 5一切似乎都正常 导航图标和下拉图标出现 但它不起作用 当我单击nav图标或dropdown按钮 无dropdown menu apears 我想特别提到的是 我还包
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • 计算三次贝塞尔曲线的弧长、曲线长度。为什么不工作?

    我正在用这个算法计算弧长 三次贝塞尔曲线的长度 function getArcLength path var STEPS 1000 gt precision var t 1 STEPS var aX 0 var aY 0 var bX 0
  • onclick 事件中未调用函数

    我想在每个 YouTube 链接的末尾添加一些 HTML 以在 litebox 中打开播放器 到目前为止 这是我的代码 document ready function var valid url new RegExp youtube com
  • 将 Firebase 云消息传递与 Windows 应用程序结合使用

    我在 Android 和 iOS 应用程序中使用 Firebase Cloud Messaging 但是我还有此应用程序的 Windows Mac OS 版本 我想保留相同的逻辑 我知道 Firebase Cloud Messaging 可
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • 使用 Google 日历源时如何禁用 FullCalendar 中的活动链接?

    我正在使用 FullCalendar 库从 Google 日历加载日历中的事件 不幸的是 事件添加到日历后 它们是可点击的 当您点击该活动时 您会自动重定向到 Google 日历页面以查看该特定活动 或者如果您有足够的访问权限 则可以直接对
  • Vaadin 12 将对象传递给 JavaScript 函数:无法对类进行编码

    Vaadin 12 Kotlin 项目 In my myPage html我有JavaScript myObject redirectToCheckout sessionId 1111 2222 所以我需要调用javaScript函数red
  • 使用 Javascript 设置 cookie [重复]

    这个问题在这里已经有答案了 我正在尝试构建我的第一个移动应用程序 它需要连接到我的 mysql 数据库并使用 json 返回数据 这很好 目前我有一个登录系统 一旦确定用户名和密码存在 它就会返回一条成功消息 对于下一步 我想在我的页面上使
  • 订阅内循环订阅?

    我目前正在与订阅内的 multiples forEach 订阅作斗争 我正在尝试检索对象列表 然后通过它们的 ID 检索它们的图像 目前我已经这样做了 this appTypeService get pipe map apps AppTyp
  • 使用 next.js 进行服务器端渲染与传统 SSR

    我非常习惯 SSR 意味着页面得到完全刷新并从服务器接收完整 HTML 的方法 其中根据后端堆栈使用 razor pub other 进行渲染 因此 每次用户单击导航链接时 它只会向服务器发送请求 整个页面将刷新 接收新的 HTML 这就是
  • 滚动顶部不符合预期

    Note 由于上次忘记奖励而重新开放赏金 A Woff 大师已经给出答案 我想在用户展开某一行时到达该行 这样当最后一个可见行展开时 用户不必向下滚动即可查看内容 I used example tbody on click td green
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u
  • 仅当显式选择行时才关闭 ui-bootstrap typeahead

    我创建了这个jsBin http jsbin com livuqafe 2 edit来证明我遇到的问题 如果您转到此处 请尝试输入 五 并继续 你的自然反应是输入 五 然后按 Tab 如果你想要 五百 你可以向下箭头一次 但是 在这种情况下

随机推荐

  • Flex 容器中的绝对定位项目在 IE 和 Firefox 中仍被视为项目

    If I have multiple elements with the property justify content space between in a flex container and I want to absolute p
  • Rails 将updated_at 转换为rfc3339 格式

    我正在尝试将标准 Rails DB 字段created at 和updated at 转换为atom feed rfc3339 格式 到目前为止我已经尝试过 DateTime rfc3339 issue updated at and Dat
  • 如何在Windows 10环境变量中的系统变量中添加多个PATH?

    我错误地删除了系统变量下的整个 PATH 变量 所以我尝试将一个名为 PATH 的变量显式添加到系统变量中 但现在每当我尝试添加多个路径时 每个路径都会覆盖前一个路径 截图1 https i stack imgur com 4V1aj jp
  • Elasticsearch 查询中的 OR 和 AND 运算符

    我有一些具有以下格式的 json 文档 source userId A1A1 customerId C1 component comp 1 timestamp 1408986553 我想根据以下内容查询文档 userId currentUs
  • Rails 3.2 中使用 gmail 或 SendGrid 时出现邮件程序身份验证错误

    我正在尝试从一个非常简单的 Rails 3 2 应用程序设置邮件 尝试过 Gmail 尝试过 SendGrid 得到同样的错误 Net SMTPAuthenticationError in UsersController create 53
  • pandoc 和 mathjax 遇到一些问题

    我正在尝试使用 pandoc 从包含一些乳胶的 markdown 文件生成 html 幻灯片 该文件是在github上 https raw github com rcalsaverini ThesisPresentation master
  • 在 Silverlight 中显示 GIF

    我的网络服务器上的文件夹中有许多 gif dir subdir bla gif etc 在同一台服务器上有一个 Silverlight 3 应用程序 ClientBin bla xap 有没有办法在 Silverlight 应用程序中显示
  • 禁用某些元素的 nganimate

    我正在使用 ngAnimate 模块 但是我所有的ng if ng show等 受其影响 我想利用 ngAnimate 来处理某些选定的元素 对于性能和元素中的一些错误 显示和隐藏速度非常快 thanks 如果您想为特定元素启用动画 而不是
  • WebDriverError:已断开连接:无法连接到渲染器

    Meta 操作系统 OSX 10 12 6 16G29 node modules chromedriver bin chromedriver v ChromeDriver 2 32 498537 cb2f855cbc7b82e20387ea
  • 如何确定 Neo4j 中节点内的属性值类型?

    目前 似乎没有办法确定节点 或关系 中的属性值是数组 集合还是字符串 匹配 n 其中 isArray n myprop 当尝试了解您正在使用的与更新和查询相关的数据类型时 这将非常方便 具体来说 如果您遇到这样的情况 您正在尝试更新属性值
  • 使用 With 绘图与使用 Block 绘图 (Mathematica)

    我想描述一个我一直遇到的问题Plot using With保持定义的参数 本地 我不一定要求解决 我遇到的问题是理解问题 有时我使用如下结构来获取绘图 Method 1 plot1 With vmax 10 km 10 Plot Evalu
  • C# 中的 TimeSpan 到本地化字符串

    有没有一种简单的方法 可能是内置的解决方案 来转换TimeSpan本地化字符串 例如new TimeSpan 3 5 0 将被转换为3 hours 5minutes 仅用波兰语 我当然可以创建自己的扩展 public static stri
  • 计算数据框中某列的百分比 - 按列“分组”

    我是 R 初学者 我需要能够计算数据框中值的百分比 但经常按其他列值 分组 我有一个大约 1000 行的数据框 包含媒体类型 版本 集合 年份 和计数 今年 我可以过滤它们 只获取特定的媒体 trSpdf lt trS trS Mediat
  • 同时进行多个异步回发 - ASP.NET

    说我有2个UpdatePanels在页面和每个UpdatePanel有一台服务器Button每个 当我单击第一个按钮 然后单击第二个按钮并查看 Firebug 时 我发现直到第一个按钮完成后才触发第二个异步回发 这是否按预期工作 我的理解是
  • Excel VBA打印机API,设置颜色和双面打印

    这是我的问题 我正在尝试访问打印机并更改颜色和双面设置 到目前为止 我拥有的代码允许我更改网络打印机的用户首选项 但我有以下两个问题 1 代码将打印机按预期设置为单面或双面 但未正确设置颜色首选项 2 Excel不会自动选择新设置 我仍然需
  • 如何使用 Spring security 创建自己的安全过滤器?

    我想知道是否可以使用 Spring Security API 在 Spring Web 应用程序中创建自己的安全过滤器 我想创建一个通用的安全过滤器 以便只需在 web xml 中添加该过滤器即可将其用于 插入 任何 Web 应用程序 安全
  • 如何动态分配函数代码?

    在 C 语言中 函数指针作为来自某个库的回调的通常途径是包含一个void 用户上下文的指针 void fp void ctx 允许库使用上下文调用回调ctx 假设我使用的库在回调中不包含上下文指针 我需要为每个上下文进行一个回调 在 C 中
  • Cordova Wrapper 应用程序,内部链接在应用程序中加载,外部链接在浏览器中加载

    我有一个简单的Cordova https cordova apache org 包装器应用程序指向外部网页 而不定义任何自己的视图 我想来自该域的所有内部链接都将加载到应用程序内 but 所有外部链接 http twitter com ht
  • 自定义 ostream

    我需要一些指导或指示来了解如何实现自定义 ostream 我的要求是 具有适用于多种数据类型的 目的是将输出发送到数据库 每个 行 应该进入一个单独的记录 每个记录最重要的字段是文本 或 blob 但其他一些字段 例如时间等 大多可以自动推
  • 如何在Cycle.js中顺序请求数据?

    我是响应式编程的新手 正在尝试使用cycle js 试图实现谁关注框本教程 https gist github com staltz 868e7e9bc2a7b8c1f754 但我知道 为了正确实施 和学习目的 我没有一项数据 完整的用户名