小编use*_*222的帖子

Ramda的类型检查助手

我想编写一个函数,其规范在下面的代码段中描述,这是我目前的实现。确实有效。但是,我已经尝试了一段时间,将其写为毫无意义,并且完全是ramda函数的组合,无法找到解决方案。问题obj => map(key => recordSpec[key](obj[key])与之联系在一起,因此我无法以无意义的方式编写整件事。

我该怎么办?

/** * check that an object : * - does not have any extra properties than the expected ones (strictness) * - that its properties follow the defined specs * Note that if a property is optional, the spec must include that case * @param {Object.<String, Predicate>} recordSpec * @returns {Predicate} * @throws when recordSpec is not an object */ function isStrictRecordOf(recordSpec) { return allPass([ // 1. no extra properties, i.e. all …

javascript ramda.js

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

发布一个 svelte 3 组件:package.json 的“main”和“svelte”字段的语义?

我学习了 Svelte 教程,并component bindings使用状态机重写了部分中的小键盘。那很好用

现在我想将Machine.svelte文件解压缩到一个npm包中,但我不知道该怎么做。我找不到任何有关发布的文档。对于我从svelte-virtual-list看到的,我可能必须配置我的mainorsvelte字段package.json

{
  "name": "@sveltejs/svelte-virtual-list",
  "version": "3.0.0",
  "description": "A <VirtualList> component for Svelte apps",
  "main": "VirtualList.svelte",
  "svelte": "VirtualList.svelte",
  "scripts": {
    "build": "rollup -c",
    "dev": "rollup -cw",
    "prepublishOnly": "npm test",
    "test": "node test/runner.js",
    "test:browser": "npm run build && serve test/public",
    "pretest": "npm run build",
    "lint": "eslint src/VirtualList.svelte"
  },
  "devDependencies": {
    "eslint": "^5.12.1",
    "eslint-plugin-svelte3": "git+https://github.com/sveltejs/eslint-plugin-svelte3.git",
    "port-authority": "^1.0.5",
    "puppeteer": "^1.9.0",
    "rollup": "^1.1.2",
    "rollup-plugin-commonjs": "^9.2.0", …
Run Code Online (Sandbox Code Playgroud)

svelte svelte-component

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

如何在 svelte 3 中强制渲染?

我有一个带有输入字段的表单。当我键入 (keyup)Enter键时,必须清除这些字段之一。我知道我可以将此字段作为受控字段处理(意味着监听keyup并维护该字段的副本),或者使用双向绑定,但在我的用例中我不能做后者,我宁愿不做前者。因此,我的问题是,如何强制渲染 Svelte 组件?

通常,表单显示为<Component field="value" />,用户修改字段并单击Enter键,我想app.set(field, value)字段重置为value,即使在 Svelte 看来,该field属性没有改变。那可能吗?

我尝试不成功的转变在于更新Svelte 组件的属性,希望当 时app.set(field, value),Svelte 将看到该field属性的两个不同值并更新组件。但这似乎不起作用:

<script>

  const watchForEnter = ev => {
    if (ev.keyCode === 13) {
      ev.preventDefault();
      const formData = new FormData(ev.target.closest("form"));
      const tag = formData.get("tag");
      dispatch({ [ADDED_TAG]: tag });
    }
  };

  const updateCurrentTag = ev => {
    currentTag = new FormData(ev.target.closest("form")).get("tag");
    console.log(`currentTag!`, currentTag)
  }

</script>

        <form>
            <fieldset class="form-group"> …
Run Code Online (Sandbox Code Playgroud)

svelte

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

如何防止并发效果执行

我有一个由效果调用的昂贵计算.我现在想要确保,此计算永远不会同时调用,即如果在第一次调用仍在运行时第二次调用它,则应忽略第二次调用.

我解决这个问题的方法是创建2个动作:calculate和setLoading.

@Effect()
calculate$ = this.updates$
  .whenAction(CALCULATE)
  .flatMap(data => {
    console.debug('LOADING', data.state.loading);
    if (!data.state.loading) {
      this.store.dispatch(Actions.setLoading(true));
      await DO_THE_EXPENSIVE_CALCULATION();
      this.store.dispatch(Actions.setLoading(false));
    }
  });
Run Code Online (Sandbox Code Playgroud)

使用Actions.setLoading显然设置state.loading.但是,如果我连续开始计算2次:

store.dispatch(Actions.calculate());
store.dispatch(Actions.calculate());
Run Code Online (Sandbox Code Playgroud)

输出是

LOADING false
LOADING false
Run Code Online (Sandbox Code Playgroud)

因此,昂贵的计算执行两次.我怎么能阻止这个?

javascript rxjs ngrx

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

"TypeError:this._subscribe不是函数"在简单节点模块中尝试RxJS时

我有以下节点代码

//index.js
var username = process.argv[2],
    password = process.argv[3],
    factories = require('./factories')(username, password);

factories.subscribe(function(data){
  console.log(data.length);
});
factories.refresh();

//factories.js
var Rx = require('rx');
var factories = function(username, password){
  var factories = [];
  var source = Rx.Observable.from(factories);
  var baseUrl = "<url>",
    factoriesOpt = {
      'uri': baseUrl+"<path>",
      'method': 'GET',
      'auth': {
        'user': username,
        'pass': password
      }
    },
    response="",
    request = require('request');

  var refresh = function(){
    request(factoriesOpt)
       .on('data', function(chunk){
         if(chunk)
           response += chunk;
       })
       .on('end', function(){
         factories = JSON.parse(response);
       })
  }
  return {
    subscribe …
Run Code Online (Sandbox Code Playgroud)

javascript node.js rxjs

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

RxJS 的循环依赖。孢子建模

我尝试使用 RxJS 来模拟一些游戏。但我发现循环依赖存在一些问题。因此,我将游戏简化为简单的模拟(我只留下了“移动”动作)。你可以在下面找到代码(我省略了一些部分,你可以在这里找到repo

const rx = require('rx')
const math = require('mathjs')
const _ = require('underscore')

const FIELD_SIZE = 10

const ctx = require('axel');

let getInitialState = () => {
  return {
    size: FIELD_SIZE,
    people: [
      { x: 0, y: 0 },
      { x: 9, y: 9 },
      { x: 5, y: 5 }
    ]
  }
}

var drawWorld = ({size, people}) => {
  // draw world logic
}


let getMove = (index)=> {
  let [xOffset, yOffset] = [[0,1], …
Run Code Online (Sandbox Code Playgroud)

javascript reactive-programming rxjs

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