请问有关节点和Redis的控制流问题的一些建议吗?(又名试图习惯JavaScript的Python编码器)
我不明白为什么client.smembers
和client.get
(Redis查找)需要是回调,而不是简单地成为语句-这使生活变得非常复杂。
基本上,我想查询一个集合,然后在获得集合的结果时,需要对每个结果进行获取。 当我获得所有数据后 ,我需要将其广播回客户端。
目前,我在两个回调中使用一个全局对象执行此操作,这看起来很混乱。我什至不确定它是否安全(代码会client.get
在启动另一个之前等待一个完成吗?)。
当前代码如下:
var all_users = [];
// Get all the users for this page.
client.smembers("page:" + current_page_id, function (err, user_ids ) {
// Now get the name of each of those users.
for (var i = 0; i < user_ids.length; i++) {
client.get('user:' + user_ids[i] + ':name', function(err, name) {
var myobj = {};
myobj[user_ids[i]] = name;
all_users.push(myobj);
// Broadcast when we have got to the end of the loop,
// so all users have been added to the list -
// is this the best way? It seems messy.
if (i === (user_ids.length - 1)) {
socket.broadcast('all_users', all_users);
}
});
}
});
但这似乎很混乱。这真的是最好的方法吗?如何确定在致电之前已执行所有查找socket.broadcast
?
挠头 谢谢您的任何建议。
我不明白为什么
client.smembers
和client.get
(Redis查找)需要是回调,而不是简单地成为语句-这使生活变得非常复杂。
那就是Node。(我很确定在这里讨论这个话题的次数已经足够多了,通过其他问题,肯定存在)
如何确定在致电之前已执行所有查找
socket.broadcast
?
这就是err
回调函数的目的。这是Node的标准-
回调中的第一个参数是错误对象(null
如果一切正常)。因此,请使用类似以下内容的内容以确保没有发生错误:
if (err) {
... // handle errors.
return // or not, it depends.
}
... // process results
但这似乎很混乱。
您会习惯的。当代码格式正确且项目结构巧妙时,我实际上发现它很好。
其他方式是:
按钮 开关 滑块 指示灯 标签 折线图 数字输入 文本输入
虽然剧透可耻,但是为了体现Go语言的设计简洁之处,必须要先剧透一下。 Go语言的控制结构关键字只有 if..else if..else,for 和 switch。 而且在Go中,为了避免格式化战争,对程序结构做了统一的强制的规定。看下下面的例子。 请比较一下A程序和B程序的不同之处。 A程序 package main import ( "fmt" ) func main() { f
我目前正在学习MEAN堆栈,开发一个简单的TODO应用程序,并希望为此实现基于角色的访问控制(RBAC)。我怎么设置角色 我想要3个角色(角色可能看起来很有趣,但这纯粹是为了学习): 上帝 超级英雄 人 GOD-类似于超级管理员,可以在应用程序中做任何事情。C, R, U, D权限适用于TODO和其他用户。可以创建一个TODO 超级英雄——类似于管理员,有超能力在他的个人数据上做任何事情——对于T
节流限速 (throttling) 允许你限制客户端给定时间的访问次数。限制和过期时间是在限速器里定义的。 默认有两个限速器,验证通过限速器和未验证限速器。 改变节流限速的 key 默认节流限速是绑定客户 ip 地址的。如果需要改变这个默认行为,你可以注册你自己的解决者,它应该返回一个字符串用于节流限速器。 app('Dingo\Api\Http\RateLimit\Handler')->setR
对于Corda节点,控制器节点作为网络地图并提供验证公证服务。如果控制器节点关闭了怎么办?其他节点会独立运行吗?
问题内容: 我使用Node / Express创建了一个小型API,并尝试使用Angularjs提取数据,但是由于我的html页面在localhost:8888上的apache下运行,而node API在端口3000上进行侦听,我得到了否’Access-Control-允许原产’。我尝试使用 和Vhosts Apache,但没有成功,请在下面查看完整的错误和代码。 XMLHttpRequest无法