在我的应用程序中,我使用D3.js进行一些可视化.
现在D3使用可变的本机JavaScript数据结构.
因此,一些数据编组对于使用Immutable.js是必要的.
我也使用Reflux和React,所以在我的商店里我管理一个不可变的地图.由于这个Map在每次更改时都会成为新东西,因此我不能将它传递给D3 Force Layout,因为它可以处理可变数据,因此每次从头开始重新计算所有内容.
我最终管理了不可变和可变数据结构,但这感觉非常错误.
我发现了一篇使用D3 + OM的实用时间序列可视化文章,它似乎触及了这个主题并建议使用游标.问题是当我使用JavaScript时它使用Clojure(脚本).
我理解这是非常抽象的没有代码示例,但任何关于工作/同步主题的任何建议将不胜感激和可变数据将不胜感激!
当最初的目的是创建一个新数组时,为什么map方法会改变原始数组?
我有一个对象数组,我传递给一个纯函数,然后映射给定的数组并返回一个新的.然后我注意到原始数组也被改变了.我理解Js中的Object通过引用传递的概念,但是仍然无法抓住为什么实现map会改变原始数组,有点胜过IMO的目的.
var initialArray = [ { name: 'one' }, { name: 'two' }, { name: 'three'} ];
function doSomething(array) {
// lodash
// return _.map(array, (item) => _.assign(item, {isSelected: true}));
// vanilla
return array.map(function(item) {
item['isSelected'] = true;
return item
});
}
var changedArray = doSomething(initialArray);
console.log('initialArray', initialArray); // [{ name: 'one', isSelected: true }, ...]
console.log('changedArray', changedArray); // [{ name: 'one', isSelected: true }, ...]
console.log(initialArray === changedArray); // false
Run Code Online (Sandbox Code Playgroud)
首先我想了解为什么会这样?
第二个我喜欢理解如何在不改变原始数组的情况下映射数组?(即._cloneDeep每次 …
当解析大数据时,从将解析器的结果返回给客户端的那一刻起,我注意到性能非常低下。
我假设apollo-server对结果进行迭代并检查类型...无论哪种方式,该操作都花费了很长时间。
在我的产品中,我必须一次全部返回大量数据,因为一次要使用它来在UI中绘制图表。我没有分页选项,可以在其中分割数据。
我怀疑速度缓慢来自于apollo-server而不是解析器对象创建。
注意,我记录了解析器创建对象所花费的时间,它的快速而不是瓶颈。
apollo-server我不知道如何测量的稍后执行的操作会花费很多时间。
现在,我有了一个版本,在该版本中,返回自定义标量类型JSON(响应)的速度要快得多。但是我真的更喜欢返回我的Series类型。
我通过查看网络面板来测量这两种类型(Series和JSON)之间的差异。
当AMOUNT设置为500且类型Series为时,大约需要1.5秒(即秒)
当AMOUNT设置为500且类型JSON为时,大约需要150毫秒(很快!)
当AMOUNT设置为1000且类型为时Series,它非常慢...
当AMOUNT设置为10000,类型为时,Series我的JavaScript堆内存不足(不幸的是,这是我们在产品中遇到的情况)
我还将apollo-server性能与进行express-graphql了比较,后者的运行速度更快,但仍不及返回自定义标量JSON的速度。
当AMOUNT设置为500时apollo-server,网络需要1.5秒
当AMOUNT设置为500时express-graphql,网络需要800毫秒
当AMOUNT设置为1000时apollo-server,网络需要5.4秒
当AMOUNT设置为1000时express-graphql,网络需要3.4秒
堆栈:
"dependencies": {
"apollo-server": "^2.6.1",
"graphql": "^14.3.1",
"graphql-type-json": "^0.3.0",
"lodash": "^4.17.11"
}
Run Code Online (Sandbox Code Playgroud)
代码:
const _ = require("lodash");
const { performance } = require("perf_hooks");
const { ApolloServer, gql } = require("apollo-server");
const GraphQLJSON …Run Code Online (Sandbox Code Playgroud) 使用meteor,有没有办法在部署过程中创建源映射?
目的是将源映射上传到支持它们的 js 错误跟踪器服务 (atatus.com),以获得更多有用的错误消息。现在我在 .meteor 目录中找到的唯一源映射是开发环境。
javascript ×2
arrays ×1
d3.js ×1
deployment ×1
graphql ×1
immutability ×1
immutable.js ×1
mapping ×1
meteor ×1
mutable ×1
reactjs ×1
source-maps ×1