小编dan*_*y74的帖子

RxJS5随着时间的推移发出数组项并永远重复

我想随着时间的推移(每次发射之间间隔一秒钟)发射数组项,并且当所有项目都发射完后,重复一遍又一遍。

我知道该怎么做,但我想知道是否还有比..更简洁的内容。

const MY_ARRAY = ['one','two','three'];
const item$ = Rx.Observable.interval(1000).take(MY_ARRAY.length).repeat().map(x => MY_ARRAY[x]);
item$.subscribe(x => console.log(x));
Run Code Online (Sandbox Code Playgroud)

谢谢

输出是..

“一”

“二”

“三”

“一”

“二”

“三”

等等

编辑:

ATOW,这里的答案总结为..

const ARR = ['one', 'two', 'three'];

// TAKE YOUR PICK THEY ALL DO THE SAME
const item$ = Rx.Observable.interval(1000).map(i => ARR[i % ARR.length]);
// const item$ = Rx.Observable.interval(1000).zip(ARR, (a, x) => x).repeat();
// const item$ = Rx.Observable.interval(1000).zip(ARR).repeat().map(x => x[1]);
// const item$ = Rx.Observable.interval(1000).take(ARR.length).repeat().map(i => ARR[i]);

item$.subscribe((x) => {
  console.log(x);
});
Run Code Online (Sandbox Code Playgroud)

rxjs rxjs5 angular

3
推荐指数
2
解决办法
743
查看次数

出现异常时如何强制爬出

我用Scrapy编写了一个爬虫。

我正在将数据写入数据库的管道中有一个函数。我使用日志记录模块记录运行时日志。

我发现当我的字符串有中文时logging.error()会抛出异常。但是搜寻器一直在运行!

我知道这是一个小错误,但是如果存在严重的异常,并且搜寻器继续运行,我会错过它。

我的问题是:是否存在可以Scrapy在出现异常时强制停止的设置?

scrapy web-scraping

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

获取已知两点的直线上的点的函数

鉴于两点:

const point1 = {x: 100, y: 0.95}
const point2 = {x: 75, y: 1.05}
Run Code Online (Sandbox Code Playgroud)

我需要知道当 x 等于某个任意值时 y 的值。

请假设存在线性关系。

例如,当 x 为 80 时,y 是多少?当 x 为 70 时,y 是多少?

有没有一个函数可以用来实现这个目的?

目前,我对数学解释感到困惑,并且理想地希望有一个 JavaScript 或 jQuery 函数,当给定任意 x 值时,它会返回 y 值。

javascript jquery

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

可以'git diff'2个字符串吗?

我有2个字符串,我想要它们之间的git diff。我可以创建file1并添加string1作为其内容。

然后,我可以创建file2并添加string2作为其内容。然后我可以git diff file1和file2。

但是,鉴于我将字符串作为字符串(而不是文件内容),可以避免这些繁琐的步骤吗?有没有更简单的方法?

就像是:

git diff "my first string" "my second string" # obviously does not work
Run Code Online (Sandbox Code Playgroud)

git diff git-diff

3
推荐指数
2
解决办法
1622
查看次数

react-codemirror beforeChange事件

我正在使用react-codemirror节点模块,如下所示:

<CodeMirror 
  className={className} 
  value={this.state.code} 
  onBeforeChange={this.onBeforeChange} 
  onChange={this.onChange} 
  options={options}
/>
Run Code Online (Sandbox Code Playgroud)

change事件工作正常,但我似乎不能与挂钩beforeChange事件.谁知道我做错了什么?

我在课堂上声明了处理程序如下:

onBeforeChange(change) {
  console.log('calling beforeChange');
}

onChange(newCode) {
  this.setState({
    code: newCode
  });
}
Run Code Online (Sandbox Code Playgroud)

javascript node.js codemirror reactjs react-codemirror

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

'Observable&lt;Object&gt;' 类型不存在属性 'timeout'

我正在尝试从 5 升级到 Angular 6 并收到此错误:

src/app/services/http.service.ts(17,14) 中的错误:错误 TS2339:“可观察”类型上不存在属性“超时”。

我在 http.service.ts 中的代码:

import { throwError as observableThrowError,  Observable } from 'rxjs';
import { Injectable } from '@angular/core';
import { environment } from "environments/environment";
import { AppService } from 'app/app.service';
import { HttpClient } from '@angular/common/http';

@Injectable()
export class HttpService {

    private baseUrl = environment.apiUrl;

    constructor(private http: HttpClient, private appService: AppService) { }

    public get(endpoint: string): Observable<any>{
        return this.http.get(this.baseUrl + endpoint)
            .timeout(this.appService.timeoutInterval)
            .retryWhen(error => error.delay(this.appService.waitInterval)
                .take(this.appService.numberOfRetries)
                .concat(observableThrowError(new Error())))
            .share();
    }
} …
Run Code Online (Sandbox Code Playgroud)

rxjs5 angular angular5 angular6 rxjs6

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

lodash take v javascript 切片性能

我有一个长度为 100,000,000 的数组

max接近数组末尾时,大约需要 8 秒:

return _.take(numbers, max)
Run Code Online (Sandbox Code Playgroud)

这大约需要 1 秒:

return numbers.slice(0, max)
Run Code Online (Sandbox Code Playgroud)

为什么性能差异如此巨大?谢谢

javascript lodash

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

WebStorm禁用js文件的TSLint

我正在使用 WebStorm 2019.1

我使用 Angular CLI 生成了一个项目。

一切正常,但我的项目中有一两个 .js 文件 - 例如protractor.conf.js

在 IDE 中,TSLint 对 .js 文件进行 linting 并显示大量红色。但我不希望 TSLint 对 .js 文件进行 lint 检查。

我知道我可以为此文件禁用 TSLint,但我宁愿通过tsconfig.jsontslint.json通过 WebStorm 设置执行此操作来正确配置我的项目。

在此输入图像描述

我已经"tslint.jsEnable": false按照此处所述进行了尝试 - https://github.com/Microsoft/vscode-tslint/issues/261 - 但我认为这是针对不同的 IDE 的。有什么想法如何通过 WebStorm 设置来做到这一点tsconfig.jsontslint.json失败吗?

webstorm typescript tslint angular

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

如何记住 TypeScript getter

我正在使用以下方法使用装饰器来记忆 TypeScript getter,但想知道是否有更好的方法。我正在使用npm 中流行的memoizee包,如下所示:

import { memoize } from '@app/decorators/memoize'

export class MyComponent {

  @memoize()
  private static memoizeEyeSrc(clickCount, maxEyeClickCount, botEyesDir) {
    return clickCount < maxEyeClickCount ? botEyesDir + '/bot-eye-tiny.png' : botEyesDir + '/bot-eye-black-tiny.png'
  }

  get leftEyeSrc() {
    return MyComponent.memoizeEyeSrc(this.eyes.left.clickCount, this.maxEyeClickCount, this.botEyesDir)
  }
}
Run Code Online (Sandbox Code Playgroud)

并且 memoize 装饰器是:

// decorated method must be pure
import * as memoizee from 'memoizee'

export const memoize = (): MethodDecorator => {
  return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {
    const func = …
Run Code Online (Sandbox Code Playgroud)

node.js typescript angular

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

Angular 12 项目的 UI 框架

我们将在 Angular 12 上创建一个新项目。我需要建议来选择 UI 框架。

我们有 Bootstrap 5、Angular Material 和 primeNg 选项。

我做了以下研究:

Bootstrap 5 适合初学者开发人员,并且响应迅速,但对于创建任何复杂的组件没有用处。开发人员必须手动完成。

Angular Material 非常适合主题化,并提供良好的小部件,但没有任何类型的内置图表和响应式支持。

PrimeNg 适用于简单和复杂的组件,它提供所有类型的小部件图表、复杂的网格、选项卡。它拥有所有的软件包和响应能力。但是,它不提供任何定制。

这是我所做的分析。

我们的要求是我们不想创建不必要的复杂组件,以便我们可以专注于支持现成组件的数据并希望避免多个库。我们还需要 i18n 的支持和辅助功能支持。

任何建议或建议将不胜感激。

谢谢

angular-material angular-cli primeng angular bootstrap-5

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