小编CBl*_*lew的帖子

使用rxjs实现指数补偿

Angular 7 文档提供了rxjs Observables在为AJAX请求实现指数补偿中的实际用法的示例:

import { pipe, range, timer, zip } from 'rxjs';
import { ajax } from 'rxjs/ajax';
import { retryWhen, map, mergeMap } from 'rxjs/operators';

function backoff(maxTries, ms) {
 return pipe(
   retryWhen(attempts => range(1, maxTries)
     .pipe(
       zip(attempts, (i) => i),
       map(i => i * i),
       mergeMap(i =>  timer(i * ms))
     )
   )
 );
}

ajax('/api/endpoint')
  .pipe(backoff(3, 250))
  .subscribe(data => handleData(data));

function handleData(data) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

虽然我了解了Observables和backoff的概念,但我还不太清楚,如何精确retryWhen计算重新订阅源的时间间隔ajax

具体如何做zipmap …

javascript observable rxjs typescript angular

5
推荐指数
1
解决办法
1190
查看次数

WAR 文件:无法找到或加载主类,但它在那里

我使用 Intellij IDEA 构建了一个 WAR 存档工件,其中包含一个用 Kotlin 编写的 Spring Boot MVC 应用程序。

以下是相关内容:

$ jar tvf application.war
...
1649 [timestamp] WEB-INF/classes/org/domain/apps/App00HelloMvcKt.class
2087 [timestamp] WEB-INF/classes/org/domain/apps/App00HelloMvc.class
...
Run Code Online (Sandbox Code Playgroud)

App00HelloMvcKt包含fun main(...),并且App00HelloMvc是 Spring Boot 应用程序类。

MANIFEST.MF包含Main-Class条目:

Main-Class: org.domain.apps.App00HelloMvcKt
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,出现了一个问题:

$ java -jar application.war
Error: Could not find or load main class org.domain.apps.App00HelloMvcKt
Caused by: java.lang.ClassNotFoundException: org.domain.apps.App00HelloMvcKt
Run Code Online (Sandbox Code Playgroud)

据我了解,有了这个目录结构,不需要额外的摸索类路径。那为什么不能运行呢?


附加信息:这是一个教学项目。我正在尝试.jsp从带有嵌入式 Tomcat 的 Spring Boot MVC 应用程序提供页面。根据互联网,此设置仅在您将应用程序打包到 WAR 并使用java -jar.

java spring war kotlin spring-boot

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

Spock:如何在规范的实现之间正确共享功能

我遇到了 Spock Framework (1.3-groovy-2.5) 的一个不幸的方面,我用它来集成测试 Gradle 插件。

代码示例

家长班级:

class ClassA extends Specification {

    def setupSpec() {
        System.out.println("In ClassA setupSpec()")
    }

    def "base feature"() {
        expect:
        true
    }
}
Run Code Online (Sandbox Code Playgroud)

儿童班:

class ClassB extends ClassA {

    @Override
    def setupSpec() {
        System.out.println("In ClassB setupSpec()")
    }

    def "extended feature"() {
        expect:
        true
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在 中运行测试时ClassB,两个版本都会setupSpec()被调用:

In ClassA setupSpec()
In ClassB setupSpec()
Run Code Online (Sandbox Code Playgroud)

当然,如果我通过本机 Groovy 方式调用方法:

class Main {

    static void main(String[] args) {
        ClassB classB = new ClassB()
        classB.setupSpec() …
Run Code Online (Sandbox Code Playgroud)

testing groovy spock

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

关闭ES2015(ES6)类中的类构造函数

可以围绕构造函数创建一个闭包,以保存实例的唯一ID:

const MyObject = (() => {
  let id = 0;

  return function() {
    this.id = id++;
  };
})();
Run Code Online (Sandbox Code Playgroud)

使用类语法如何实现相同的目的?有没有一种方法可以围绕类的constructor函数创建一个闭包?

javascript closures class ecmascript-6

0
推荐指数
1
解决办法
685
查看次数