我是socket.io的新手并且已经遇到了一些看似很奇怪的东西.我实际上并不知道和之间的区别socket.emit
,io.emit
但我无法在任何地方找到解释.
io.on('connection', function(socket){
io.emit('connected') // <<<< HERE >> socket.emit('connected');
socket.on('disconnect', function(){
io.emit('disconnect')
});
socket.on('chat message', function(msg){
io.emit('chat message', msg);
});
});
server.listen(3000);
Run Code Online (Sandbox Code Playgroud)
这是我的服务器的东西,但当我更改io
到socket
该消息时,仅在连接的用户连接时显示.io.emit
将消息发送给所有用户.
也许它应该是那样的,或者它只是一些可怕的黑客?如果您需要客户端HTML,请告诉我.
我在node.js(V8.1.3)中创建一个脚本,该脚本查看来自多个API的类似JSON数据并比较这些值.更确切地说,我正在研究不同股票的不同市场价格(实际上是加密货币).
目前,我正在使用promise.all来等待各个API的所有响应.
let fetchedJSON =
await Promise.all([getJSON(settings1), getJSON(settings2), getJSON(settings3) ... ]);
Run Code Online (Sandbox Code Playgroud)
但是,如果即使只有一个承诺拒绝错误,Promise.all也会抛出错误.在bluebird docos中有一个名为Promise.some的函数,它几乎就是我想要的.据我所知,它需要一系列承诺并解决两个最快的解决方案,否则(如果少于2个promises解决)会抛出错误.
这个的问题是,首先,我不希望最快的两个承诺被解决为它返回的东西,我希望任何成功的承诺返回,只要有超过2.这似乎是什么Promise.any除了最小计数为1.(我要求最少数为2)
其次,我不知道我将等待多少Promise(换句话说,我不知道我将从中请求数据的API数量).它可能只有2或可能是30.这取决于用户输入.
目前写这篇文章在我看来,可能只有一种方法来获得一个计数为2的promise.any,这将是最简单的解决方案.这可能吗?
顺便说一下,不确定标题是否真的总结了这个问题.请建议编辑标题:)
编辑:我可能编写脚本的另一种方式是前两个API开始计算并加载到浏览器,然后是每个下一个加载和计算后的JSON.这样我就不会等待所有Promise在我开始计算数据并将结果传递到前端之前完成.这个功能是否适用于其他情况?
我的意思是这样的:
并行请求JSON ......
| ----- JSON1 ------ |
| --- JSON-失败--- | > catch error>做错误的事情.不影响下一个结果.
| ------- ------- JSON2 | >至少满足2个结果>计算JSON>到浏览器.
| ------- JSON3 --------- | >计算JSON>到浏览器.
我想同时使用ThreadPoolExecutor
fromconcurrent.futures
和 async 函数。
我的程序反复向线程池提交具有不同输入值的函数。在那个更大的函数中执行的最终任务序列可以是任何顺序,我不关心返回值,只关心它们在未来的某个时刻执行。
所以我尝试这样做
async def startLoop():
while 1:
for item in clients:
arrayOfFutures.append(await config.threadPool.submit(threadWork, obj))
wait(arrayOfFutures, timeout=None, return_when=ALL_COMPLETED)
Run Code Online (Sandbox Code Playgroud)
提交的函数是:
async def threadWork(obj):
bool = do_something() # needs to execute before next functions
if bool:
do_a() # can be executed at any time
do_b() # ^
Run Code Online (Sandbox Code Playgroud)
wheredo_b
和do_a
is async 函数。问题是我收到错误:TypeError: object Future can't be used in 'await' expression
如果我删除等待,我会收到另一个错误,提示我需要添加await
.
我想我可以让一切都使用线程,但我真的不想那样做。
python multithreading asynchronous python-3.x python-asyncio
我对localStorage
如何将它与数字和 一起使用感到困惑parseInt()
。
例如,我有一个“hiScore”变量和一个“score”变量。我想hiScore
在我的变量中添加变量localStorage
localStorage 接受一个字符串变量,所以我必须将其转换为数字parseInt()
我的所有变量都已在没有 localStorage 的情况下设置,因此我想知道现在添加 localStorage 的最佳方法是什么。
我无法理解 mozilla 或 W3schools 上的文档。
我首先看过持有护照,mongodb和express的持续会话,但它没有帮助或有意义.
我正试图通过我的网站获得持久登录.我的序列化过程无效.
// Passport needs to be able to serialize and deserialize users to support persistent login sessions
passport.serializeUser(function(user, done) {
console.log('serializing user:',user.username);
//return the unique id for the user
return done(null, user._id);
});
//Desieralize user will call with the unique id provided by serializeuser
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
console.log('deserializing user:',user.username);
return done(err, user);
});
});
Run Code Online (Sandbox Code Playgroud)
整个护照文件可以在github上找到.
我认为问题是我立即反序列化,或者至少是console.logs显示的内容.
或者它可能与我的会话:
app.use(session({
secret: 'keyboard cat',
cookie : {
maxAge: 3600000 // see below
}
})); …
Run Code Online (Sandbox Code Playgroud) 我刚拿到一个拉力云盾.要将它连接到我的arduino uno,它说我必须"快捷"重置按钮旁边的引脚.http://wiki.dragino.com/index.php?title=Yun_Shield#Connect_to_Arduino_Uno
但是我的arduino没有那些针脚.IMG:
顺便说一下,我以为我没有必要这样做,因为在我成功运行wifi上的闪烁草图之前.当我再次尝试这样做时,它返回了这个错误:
avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
Run Code Online (Sandbox Code Playgroud) 我对使用javascript / nodejs编程微控制器感兴趣。
我首先得到了一个Arduino uno,并使用cylonjs对其进行了编程。我做了一个简单的机器人,但很快意识到这是行不通的,因为我需要始终将Arduino连接到计算机以运行节点程序。董事会还需要具有Wi-Fi,这样我就可以通过网络进行控制了。
有人建议我使用Arduino yun,因为它具有所有这些功能。这似乎很完美,但是我发现还有其他板也提供相同的功能,并且可以使用js。
还有很多(例如树莓派,但我不需要或不需要整个操作系统)
在查看了所有可行的电路板之后,我意识到tessel和espruino是专门为javascript制作的。
所以我的问题是,这些板之间的主要区别是什么,尤其是Arduino Yun,Tessel和espruino。
谢谢!
编辑:镶嵌模块看起来真的很昂贵,我可能不会使用它们。-只是普通的别针。
我必须将 oracle db 中的表更新为 10k 的批次。
我试过这个:
BEGIN
WHILE (true) LOOP
UPDATE TOP (10000) CUSTOMERS SET ACTIVE = 'N' WHERE ACTIVE='Y';
IF sql%notfound THEN
EXIT;
END IF;
COMMIT;
END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为 plsql 不支持 top。
有什么建议?
javascript ×5
node.js ×4
arduino ×2
arduino-uno ×1
asynchronous ×1
bluebird ×1
database ×1
ecmascript-7 ×1
html ×1
mongodb ×1
oracle ×1
passport.js ×1
plsql ×1
promise ×1
python ×1
python-3.x ×1
socket.io ×1
sockets ×1
sql ×1
sqlplus ×1
tessel ×1