小编Zan*_*man的帖子

RXJS 出错后继续 concat subscribe

我有一系列需要按顺序触发的 observable。一旦发生错误,我需要捕获错误,记录它并继续观察。

目前,一旦发生错误,观察者就会停止。观察者必须继续并且不会因错误而重新启动或完成。

import * as Rx from "rxjs";
const source = [
  Rx.Observable.from("1").delay(200),
  Rx.Observable.from("2").delay(150),
  Rx.Observable.throw("error"),
  Rx.Observable.from("3").delay(124),
  Rx.Observable.from("4").delay(201),
];
let sSource = Rx.Observable.concat(...source);
sSource.subscribe((v) => {console.log(v)}, (e) => {console.log(e)});
Run Code Online (Sandbox Code Playgroud)

电流输出:

1
2
error
Run Code Online (Sandbox Code Playgroud)

预期输出:

1
2
error
3
4
Run Code Online (Sandbox Code Playgroud)

我们能想出的唯一解决方案是预先循环遍历sourceobservable 并单独向它们添加 catch 处理程序,然后一旦发生错误,它就会得到正确处理,观察者可以继续操作,而无需完成整个串联的 observable。

我们觉得应该有一个更优雅的解决方案。如果需要,我会发布我们目前的解决方案。

rxjs typescript rxjs5 rxjs6

8
推荐指数
1
解决办法
4836
查看次数

D3 简单折线图:错误:<path> 属性 d:预期的移动路径命令('M' 或 'm'),“[object Object]”

我正在尝试使用包含数字元素的一维数组制作基本折线图。

图表.html

<svg id="svg"></svg>
Run Code Online (Sandbox Code Playgroud)

图.js

lineData = [10,15,20,25,30,35,40,35,30,25,20,15,10];
let svg = D3.select("#svg").attr('width', width).attr('height', height);

let chart = svg.append('g').classed('display', true).attr('transform', 'translate(' + this.padding.l + ', ' + this.padding.t + ')');

let x = D3.scaleLinear().domain([0, lineData.length]).range([0,width]);
let y = D3.scaleLinear().domain([0, D3.max(lineData)]).range([height, 0]);

let line = D3.line().x((d,i) => {return x(i);}).y((d) => {return y(d);}).curve();

chart.selectAll('.line').data([lineData]).enter().append('path').classed('line', true).attr('stroke', 'red').attr('d', (d) => {return line(d);});
Run Code Online (Sandbox Code Playgroud)

我不断收到此错误: Error: <path> attribute d: Expected moveto path command ('M' or 'm'), "[object Object]".

----------更新(未简化的角度组件)---------

条形曲线图.component.ts

import {Component, Input, OnInit, ViewChild} from '@angular/core'; …
Run Code Online (Sandbox Code Playgroud)

javascript d3.js

4
推荐指数
1
解决办法
7819
查看次数

D3:.transition()不处理事件

我正忙着在Angular4中使用D3绘制条形图.

// Enter Phase
this.chart.selectAll('.bar')
  .data(this.barData)
  .enter()
  .append('rect')
  .attr('class', 'bar');

// Update Phase
let bars = this.chart.selectAll('.bar').transition()
  .attr('x', (d) => {return this.x(this.parseTime(d.date.toUpperCase()));})
  .attr('y', (d) => {return this.y(d.point)})
  .attr('width', 15)
  .attr('height', (d) => {return this.charDimensions.height - this.y(d.point);})
    .on("mouseover", function (d) {D3.select(this).style('opacity', 0.5);})
    .on("mouseout", function (d) {D3.select(this).style('opacity', 1);})
    .on("click", (d) => {this.barClicked.emit(d);});

// Exit phase
this.chart.selectAll('.bar')
  .data(this.barData)
  .exit().remove();
Run Code Online (Sandbox Code Playgroud)

在我的绘图方法中,当我打电话时,animate()我得到一个错误:Error: unknown type: mouseover.这是有道理的,因为我可能试图调用on("<event>")D3返回的转换,转换效果就在那里,但是,转换后的所有内容都会中断,即:动画有效,但是绘图被打破了.

但是,当我尝试执行以下操作时:

// Update Phase
let bars = this.chart.selectAll('.bar');
bars.transition();
bars.attr('x', (d) => {return this.x(this.parseTime(d.date.toUpperCase()));}) …
Run Code Online (Sandbox Code Playgroud)

javascript jquery css3 d3.js angular

3
推荐指数
1
解决办法
1883
查看次数

HTML 5 视频播放无法在 iPhone(Chrome 和 Safari)上运行

我正在尝试在我正在构建的简单网页上实现基本的 HTML5 视频播放。

真的,没有什么花哨的东西。甚至这个例子也不起作用。

<link href="//vjs.zencdn.net/5.4.6/video-js.min.css" rel="stylesheet">
<script src="//vjs.zencdn.net/5.4.6/video.min.js"></script>
<script src="//vjs.zencdn.net/ie8/1.1.1/videojs-ie8.min.js"></script>

<video id="example_video_1" class="video-js vjs-default-skin"
  controls preload="auto" width="640" height="264"
  poster="http://video-js.zencoder.com/oceans-clip.png"
  data-setup='{"example_option":true}'>
 <source src="http://video-js.zencoder.com/oceans-clip.mp4" type="video/mp4" />
 <source src="http://video-js.zencoder.com/oceans-clip.webm" type="video/webm" />
 <source src="http://video-js.zencoder.com/oceans-clip.ogv" type="video/ogg" />
 <p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p>
</video>
Run Code Online (Sandbox Code Playgroud)

我收到以下错误: The media could not be loaded, either because the server or network failed or because the format is not supported 我是否缺少有关 IOS 和 HTML5 …

html javascript iphone html5-video ios

2
推荐指数
1
解决办法
4018
查看次数

标签 统计

javascript ×3

d3.js ×2

angular ×1

css3 ×1

html ×1

html5-video ×1

ios ×1

iphone ×1

jquery ×1

rxjs ×1

rxjs5 ×1

rxjs6 ×1

typescript ×1