小编Har*_*til的帖子

Observables(Rx.js)与ES2015发生器相比如何?

据我了解,以下是解决异步编程工作流的技术:

  1. 回调(CSP)
  2. 承诺

较新的方法:

  1. Rx.js Observables(或大多数,bacon.js,xstream等)
  2. ES6发电机
  3. 异步/等待

我们现在正在回避这些新方法的回调和承诺.我目前理解的是 - 在ES2015生成器之上,Async/Await更像是一个更清晰的抽象.

我无法理解的是Observables和Generators之间的概念差异.我已广泛使用它们并且使用它们没有任何问题.

令我困惑的是Observables和Generators的用例.我得出的结论是,他们最终解决了同样的问题 - 异步性.我看到的只有潜在的差异是生成器固有地为代码提供命令式语义,而使用Rxjs的Observable似乎提供了反应范式.但是这样吗?

这应该是Observable和Generator之间选择的标准吗?优缺点都有什么.

我错过了大局吗?

随着Observable最终制作成未来的Ecmascript,Promises(带有可取消令牌)/ Observable/Generators会相互竞争吗?

javascript generator reactive-programming ecmascript-6 rxjs5

24
推荐指数
2
解决办法
3018
查看次数

TypeScript中的setTimeout应该使用什么返回类型?

考虑以下代码:

const timer: number = setTimeout(() => '', 1000);
Run Code Online (Sandbox Code Playgroud)

Typescript会抛出错误:Type 'Timer' is not assignable to type 'number'.快速查找告诉我setTimeout返回NodeJS.Timer.

但是,如果我正在进行基于浏览器的开发,使用NodeJS.Timer感觉不对.哪个是正确的类型定义或返回类型,setTimeout无需借助any声明即可完成工作?

typescript

18
推荐指数
3
解决办法
6773
查看次数

Jersey,JAXB,JAX-RS,Moxy,Jackson,EclipseLink Moxy,json和xml之间有什么关系?

我来自Node.js背景,对RESTful Web服务有很好的理解.

现在我正在尝试使用Java构建RESTful Web服务.我理解核心Java,但对基于Java的Web开发是全新的.

我在一些教程之后得出结论,我需要使用Jersey框架来构建我的RESTful API.我知道Jersey是JAX-RS的某种参考实现.

但我无法理解JAXB,Jackson,EclipseLink Moxy,jersey-media-moxy,Jettison,JSON-P JSON,XML等各种其他术语和组件之间的关系.我唯一可以得出的结论是,像Java一样将Java对象转换为XML或JSON等价物并不是那么简单.

我的问题是,如果我正在开发基于Java的RESTful API,那么上面提到的这些术语与它们如何组合在一起的关系是什么.

java rest jersey jaxb2 jersey-2.0

17
推荐指数
1
解决办法
1万
查看次数

TypeScript是否具有InputEvent的类型定义?

是否有任何节点@types/*模块或任何可以提供类型定义的东西InputEvent

在这里阅读更多的信息InputEvent.

typescript

17
推荐指数
3
解决办法
6135
查看次数

如何以编程方式创建Vue.js插槽?

我有一个带插槽的以下组件:

<template>
    <div>
        <h2>{{ someProp }}</h2>
        <slot></slot>
    </div>
</template>
Run Code Online (Sandbox Code Playgroud)

出于某些原因,我必须手动实例化此组件.这就是我这样做的方式:

const Constr = Vue.extend(MyComponent);
const instance = new Constr({
    propsData: { someProp: 'My Heading' }
}).$mount(body);
Run Code Online (Sandbox Code Playgroud)

问题是:我无法以编程方式创建插槽内容.到目前为止,我可以创建基于字符串的简单插槽:

const Constr = Vue.extend(MyComponent);
const instance = new Constr({
    propsData: { someProp: 'My Heading' }
});

// Creating simple slot
instance.$slots.default = ['Hello'];

instance.$mount(body);
Run Code Online (Sandbox Code Playgroud)

问题是 - 如何以$slots编程方式创建并将其传递给我正在创建的实例new

注意:我没有使用完整版本的Vue.js(仅限运行时).所以我没有可用的Vue.js编译器来动态编译模板.

javascript vue.js vue-component vuejs2

13
推荐指数
2
解决办法
2804
查看次数

如何从Vue.js功能组件中发出事件?

作为问题的标题,this功能组件中没有上下文.所以,如果我必须发出一个事件,我该怎么办呢?

例如,在下面的代码片段中:

<template functional>
    <div>
        <some-child @change="$emit('change')"></some-child>
    </div>
</template>
Run Code Online (Sandbox Code Playgroud)

我的功能组件没有this上下文,因此$emit不可用.我怎么能搞砸这个活动?

javascript vue.js vuejs2

12
推荐指数
2
解决办法
5874
查看次数

如何处理 NPM 错误:无法设置 null 的属性(设置 'parent')?

当在具有 NPM 工作区功能的 monorepo 中使用时,会发生此 NPM 错误。我有一个包含 5 个包的 monorepo :abc和。我在不同的存储库中还有一个包,它不是工作区。该包的名称是,它取决于 package和。dexcd

x当我尝试将包添加为我的包的依赖项时,就会出现问题e。每次我尝试: 时npm install x -w packages/e,我都会收到以下错误:

npm ERR! Cannot set properties of null (setting 'parent')

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/harshal/.npm/_logs/2022-11-11T17_27_57_008Z-debug-0.log
Run Code Online (Sandbox Code Playgroud)

错误日志中绝对没有任何内容,除了解决依赖项时错误源自包的事实之外arborist

我尝试过使用多个 NPM 版本^8.x.x,但似乎没有解决问题。

javascript node.js npm

12
推荐指数
1
解决办法
1万
查看次数

如何使用 monaco 编辑器进行语法高亮显示?

我开发了一个基于代码的聊天组件。每个聊天都是一些代码片段。对于用户输入,我使用monaco-editor。它工作正常。

但是一旦用户点击发送按钮,我就会从摩纳哥编辑器获得原始输入。我需要将此用户输入附加到聊天列表并再次突出显示此输入。

有没有办法可以使用摩纳哥编辑器来做到这一点?或者我必须将highlight.js与 Monaco 一起使用吗?

javascript syntax-highlighting monaco-editor

10
推荐指数
2
解决办法
8562
查看次数

如何使用 Next.js 启用 12 因素应用程序捆绑?

阅读有关环境变量的 Next.js 文档-

为了确保仅服务器机密的安全,Next.js 在构建时将 process.env.* 替换为正确的值。

这是否意味着构建时可用的环境变量是运行时 Next.js 应用程序唯一可用的变量?这似乎是有问题的,因为这意味着我必须为每个环境进行构建!

如果是这种情况,我如何使我的应用程序采用12 因素交付?我想将 Next.js 应用程序打包为 Docker 映像,只需构建一次,然后部署到三个不同的环境 -测试暂存,然后在 Azure PaaS 上进行生产

javascript node.js next.js

9
推荐指数
1
解决办法
888
查看次数

使用Rx.js过滤运算符的Typescript区分联合类型?

Typescript支持有区别的联盟.在下面的示例中,如何将Rxjs的相同概念扩展到filter运算符

interface Square {
    kind: 'square';
    width: number;
}

interface Circle {
    kind: 'circle';
    radius: number;
}

interface Center {
    kind: 'center';
}

type Shape = Square | Circle | Center;

const obs$: Observable<Shape> = of<Shape>({ kind: 'square', width: 10 });

// Expected type: Observable<Square>
// Actual type: Observable<Shape>
const newObs$ = obs$.pipe(
    filter((x) => x.kind === 'square')
);
Run Code Online (Sandbox Code Playgroud)

我上面的代码片段,我想看到newObs $将其类型推断为:Observable<Square>.但显然,TypeScript不这样做.

怎么做到这一点?我是否达到了TypeScript类型推断的极限?

我寻找这个,因为它似乎在Redux + Redux-Observable代码库中非常有用.

javascript rxjs typescript redux redux-observable

7
推荐指数
1
解决办法
289
查看次数