小编Gil*_*mes的帖子

在 JS (Node.js) 中同时管理多个长时间运行的任务

这里是 Golang 开发人员,正在尝试学习 JS (Node.js)。

我习惯于在 Go 中使用 goroutine,为了简单起见,我们假设它们只是线程(实际上它们并不完全是线程,更像是Green Threads,但请耐心等待!)。

现在想象一下,我想创建某种可以运行某些服务的服务endlessTask,例如,可以是从 websocket 接收数据并保持内部状态更新的函数,以便稍后查询。现在,我希望能够同时为多个用户提供服务,并且每个用户也可以在某个时刻停止其特定的正在进行的任务。在 Go 中,我可以为我的 生成一个 goroutine endlessTask,在请求调度程序中存储某种会话,以跟踪每个任务所属的用户。

我怎样才能在JS中实现这样的东西?我浏览了 Node.js API 文档,发现了一些有趣的事情:

  • 集群:似乎并不完全是我正在寻找的
  • 子进程:可以工作,但我会为每个客户端/用户生成 1 个进程,我认为开销会很大
  • Worker 线程:更像是这样,但文档指出它们“对于执行 CPU 密集型 JavaScript 操作非常有用”并且“Node.js 内置异步 I/O 操作比 Workers 更高效”

我不确定如何在没有多线程或多处理的情况下处理这种情况。在这种情况下,工作线程解决方案是否可行?

任何意见或建议将不胜感激。谢谢!

javascript multithreading node.js node-worker-threads

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

Firebase:检查用户名是否已存在

我怎样才能确定用户名(由用户通过EditText字段选择)是唯一的?我目前正在使用实时数据库:

FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();
mDatabase = FirebaseDatabase.getInstance();
User mUser = new User(user.getUid().toString(), username);
DatabaseReference allUsersRef = mDatabase.getReference("AllUsers");
allUsersRef.child(user.getUid().toString()).setValue(mUser);
Run Code Online (Sandbox Code Playgroud)

(username=用户选择的用户名; User=仅包含UID和用户名的对象)

这产生以下结构:

MyApp
 |
 ---AllUsers
     |
     ---THE_USERS_UID
          |
          |---username: "THE_USERS_USERNAME"
          |
          |---uid: "THE_USERS_UID"
Run Code Online (Sandbox Code Playgroud)

因此,如果其他人打开我的应用程序并且必须选择用户名,我怎么能"阻止"他选择已被其他人选择的用户名?

干杯!

android firebase firebase-realtime-database

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