小编Dan*_*nny的帖子

ES2017 - 异步与收益率

我对目前关于将async函数和关键字添加await到下一个EcmaScript的讨论感到困惑.

我不明白为什么有必要在async关键字之前使用function关键字.

从我的观点来看,await关键字等待发电机或承诺的结果一个函数的return应该是足够的.

await应该在普通函数和生成器函数中简单可用,无需额外的async标记.

如果我需要创建一个函数作为结果应该可用await,我只需使用一个promise.

我的理由是这个很好的解释,下面的例子来自:

async function setupNewUser(name) {  
  var invitations,
      newUser = await createUser(name),
      friends = await getFacebookFriends(name);

  if (friends) {
    invitations = await inviteFacebookFriends(friends);
  }

  // some more logic
}
Run Code Online (Sandbox Code Playgroud)

它也可以作为普通函数完成,如果函数的执行将等待完成孔函数,直到满足所有等待.

function setupNewUser(name) {  
  var invitations,
      newUser = await createUser(name),
      friends = await getFacebookFriends(name);

  if (friends) {
    invitations = await inviteFacebookFriends(friends);
  }

  // return because createUser() and getFacebookFriends() …
Run Code Online (Sandbox Code Playgroud)

javascript async-await ecmascript-6 ecmascript-2017

32
推荐指数
3
解决办法
7252
查看次数

什么(in_memory)图形DB如果聚焦建模数据

我没有想法,希望得到一些有用的意见.我正在使用这个问题来压缩我的经验并分享它们,希望激励一些经销商进一步将图形数据库建模作为一流的问题/方式.

我已经验证了node.js可以使用的一些图形数据库解决方案几周.我的用例是保存不同社交用户网络帐户的交互.需要以最有效的方式使用CPU和内存.

我最重要的要求是:

  • in_memory(至少用于编制索引)
  • 开源(并免费使用)
  • 与一等公民相同的JavaScript/Node.js表现
  • 舒适的查询和建模语言

Neo4j的

我真的很喜欢密码,所以我最好的选择是Neo4j.但是关于Neo4j的主要问题是JavaScript访问是非原生的.它使用的REST-API 比直接Java访问慢大约十倍(10倍).所以我看了一下node-neo4j-embedded,但它已经处于非活动状态超过两年了.看起来它的作者根本不活跃(坏迹象).

ArangoDB

ArangoDB非常好的核心开发人员回答了关于内部的问题.最后,它意味着JavaScript是一流的公民,因为本机查询可以被推出JS.看看开源基准测试,我认为这是公平的.但我担心他们没有使用node-neo4j-embedded作为他们的基准.基准测试比较REST-API(由于@weinberger评论而编辑).我希望他们比较本机API(也许有人足够snoopy并尝试一下! - 让我们知道!).更新:正如我现在注意到的那样,OrientDB 用新的node.js驱动程序回答了基准测试(通过启动服务器使用命令高速缓存)-Dcommand.cache.enabled = true -Dcommand.cache.minExecutionTime = 3,什么是不公平的,因为它不是查询缓存基准!)

因为我喜欢使用ArangoDB作为图形数据库,所以我有3个选择(来源:FAQ):

一般来说,它像cypher一样不舒服.我不确定如何比较以及建模数据的正确方法(如Neo4J解释得很好).我很想为ArangoDB Graphs提供类似的东西.感觉ArangoDB专注于图形操作,如果你有更多的关系而不是行,Neo4J更符合使用图形的需要(使用图形而不是连接关系的原因).

MongoDB的

基于文档的MongoDB没有针对图形操作进行优化,但后来获得了实验性的内存存储引擎.还有一些项目是in_memory或图形相关,但没有什么是真正引人注目的.在本次讨论中,看起来MongoDB并不是我喜欢使用的.

OrientDB

因为有一个关于OrientDB和MongoDB的比较(来自OrientDB),我虽然即将使用这个." OrientDB有一个混合的Document-Graph引擎 …

neo4j node.js orientdb arangodb lokijs

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

将请求传递给特定的分叉节点实例

如果我错了,请纠正我,但不可能在同一端口上启动多个 http 服务器。

基于此,有趣的是 NodeJS 集群可能会分叉。因为我知道主人正在将请求传递给分叉的工人之一。由操作系统或cluster.schedulingPolicy = "rr"管理的 worker代表“round robin”。

关键是:每个工作人员都需要自己的内存,因此您需要 x 倍的内存,其中 x 是工作人员的数量

但是如果我喜欢在我的节点应用程序之外运行不同的(子)域,我也喜欢保存绑定到(子)域的 in_memory 数据库(例如一个简单的 JSON 文件)的不同部分。或基于资源,如subdomain.example.tdl/resource1/whatever.

不可能接缝。无论是基于资源还是基于域。

在我看来这应该是可能的,因为我可以通过不同的现有中间件基于请求对象(res.url)和资源(params)进行路由。

因此,应该可以告诉 master 将请求传递给特定的分叉实例。

cluster-computing request node.js

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