- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
当我的系统产生错误时,这些错误会被收集并最终发送到票证 API。所有错误均按其优先级类型分组。因此,如果抛出两种不同的错误类型,则应发送两张票证。
看起来像:
var tickets = [{
type: 'validation',
component: 1,
time: '2016-04-13T10:26:41.420Z',
messages: [ [Object], [Object], [...] ]
}, {
type: 'fatal',
component: 1,
time: '2016-04-13T10:26:41.420Z',
messages: [ [Object] ]
}];
该数组中的每个对象都应该一个接一个地发送,延迟 2 秒。 sendToTicketAPI() 返回一个 Promise,我也想在发送所有票证时返回一个 Promise。我的想法是,我可以用 .onEnd/.onError 解决/拒绝它。
代码是:
var Bacon = require('baconjs'); //v0.7.71
createTicketWrapper(msg, fnResolve, fnReject) {
Bacon
.fromArray(tickets)
.bufferingThrottle(2000)
.flatMap(function (ticket) {
return sendToTicketAPI(ticket)
.then(function () {
return ticket;
});
})
.onError(function (err) {
console.error('Unexpected error msg', err);
if (fnReject)
fnReject();
})
.onEnd(function () {
if (fnResolve)
fnResolve()
});
}
但我得到:
[TypeError: Bacon.fromArray(...).bufferingThrottle(...).flatMap(...).onError(...).onEnd is not a function]
我不明白为什么.onEnd不是一个函数!?也许另一种方法?
最佳答案
onError 返回一个取消订阅函数(它没有 onEnd 函数:“就像订阅一样,此方法返回一个用于取消订阅的函数。”通过 https://baconjs.github.io/api.html#observable-onerror ),而不是事件流(有)。
试试这个:
var Bacon = require('baconjs'); //v0.7.71createTicketWrapper(msg, fnResolve, fnReject) { var stream = Bacon .fromArray(tickets) .bufferingThrottle(2000) .flatMap(function (ticket) { return sendToTicketAPI(ticket) .then(function () { return ticket; }); }); stream.onError(function (err) { console.error('Unexpected error msg', err); if (fnReject) fnReject(); }) stream.onEnd(function () { if (fnResolve) fnResolve() });}
请注意,我将从 flatMap 创建的事件流分配给一个变量,然后使用它分别订阅 onError 和 onEnd。
关于node.js - Bacon.onEnd 不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36599628/
我正在学习使用神奇的 Bacon.js用于函数式响应式(Reactive)编程的库。向属性或流添加处理程序很容易: handler = function(value){... do something
我有以下 PHP 代码来生成 QR 码并显示到浏览器。 以下代码有效: $renderer = new \BaconQrCode\Renderer\Image\Png(); $
我有以下 PHP 代码来生成 QR 码并显示到浏览器。 以下代码有效: $renderer = new \BaconQrCode\Renderer\Image\Png(); $
在试验 Bacon.js 时,我遇到了以下意外行为: var email = $("#email") .asEventStream("k
my_Stream 是我想要累积并分配给变量以供进一步处理的数据。我的问题:一旦流完成,如何将变量 the_string 的内容获取到 console.log? my_Stream.onValue(f
我有一个定期触发的事件: let periodicEvent = Bacon.interval(1000, {}); periodicEvent.onValue(() => { doStuff
假设如下代码(当前状态可以查看 here ): function scrollTopFromEvent(evt) { return $(evt.target).scrollTop(); } f
我无法理解什么是 Bacon.js 中的惰性求值。 我使用 map 和 flatMap 编写了 Bacon 提供的示例,我得到了相同的结果。 这是HTML 这是使用 map 的代码的JS var
正如标题所说,我正在寻找一些组合器 collect,它将同时发出的事件收集到一个列表中,类似于 Reactive-Banana 中的那个。所以换句话说: collect :: EventStream
当按下 ENTER 时,我有一个事件流 var enter = $('#text') .asEventStream('keydown') .filter(function(e){
我想在 Bacon.js 中缓冲 EventStream 的值,就像 buffer(closingSelector) 一样在 RxJava 中表现。当“ Controller 流”(RxJava 方法
我有一个要向其发出 get 请求的 url 数组。我从 urls 数组和 flatMap ajax 请求创建一个流,如下所示:响应 = Bacon.fromArray(url_arr) .flatMa
我想在以下场景中使用 bacon.js: 1.读取目录下的文件 2.每个文件由一个url组成,向该url发起http请求 3.将每个响应写入另一个目录中的相应文件 从文档中,我了解到,即使所有值都被过
使用 Bacon.js 处理 POC 并遇到一些属性值问题。 我能够在 onValue 回调中检索所有新的属性值,但是我想知道设置此新值之前旧的属性值是什么。到目前为止,我还没有找到任何简单或优雅的解
我一直在尝试为流行的 kevin bacon 游戏创建图形表示。我已经创建了图形和顶点类,但在创建广度优先搜索方法来遍历图形并找到从 Kevin Bacon 到 Actor 的最短路径并在途中打印出边
我正在尝试为 requestAnimationFrame 生成类似于 Bacon.fromPoll 的流 为什么以下代码会产生“超出最大调用堆栈”错误? function rafSequence()
关于响应式编程的大部分资源,例如“A Survey on Reactive Programming”(Bainomugisha 等人,2012 年),介绍了几个可以对不同的响应式(Reactive)解
作为 bacon.js 的新手,我似乎无法理解事件流和属性之间的区别。 属性是从流构建的(使用 .constant 构建的属性除外?) 他们有大多数共同的方法 以同样的方式订阅它们 有人可以解释差异以
我有一个表单,当前有 2 个输入(数量将会增加),用户可以在其中添加/编辑数字。更改任何字段后,我想用这两个数字进行计算。 使用基本的 jQuery,这将是轻而易举的事情: var f1 = $(".
我正在尝试深入研究响应式编程。因此,我决定使用 Bacon javascript 库创建一个使用 RSA 加密的简单聊天。 我的问题:使用 Bacon 创建随机数流的最佳方法是什么?之后我想将随机数流
我是一名优秀的程序员,十分优秀!