小编Man*_*anu的帖子

io.emit vs socket.emit

我是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)

这是我的服务器的东西,但当我更改iosocket该消息时,仅在连接的用户连接时显示.io.emit将消息发送给所有用户.

也许它应该是那样的,或者它只是一些可怕的黑客?如果您需要客户端HTML,请告诉我.

javascript sockets node.js socket.io

41
推荐指数
3
解决办法
2万
查看次数

功能类似于Promise.some/any,用于未知数量的承诺

我在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>到浏览器.

javascript node.js promise bluebird ecmascript-7

8
推荐指数
1
解决办法
2326
查看次数

Python 3:如何向线程池提交异步函数?

我想同时使用ThreadPoolExecutorfromconcurrent.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_bdo_ais async 函数。问题是我收到错误:TypeError: object Future can't be used in 'await' expression如果我删除等待,我会收到另一个错误,提示我需要添加await.

我想我可以让一切都使用线程,但我真的不想那样做。

python multithreading asynchronous python-3.x python-asyncio

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

如何使用 localStorage 处理数字

我对localStorage如何将它与数字和 一起使用感到困惑parseInt()

例如,我有一个“hiScore”变量和一个“score”变量。我想hiScore在我的变量中添加变量localStorage

localStorage 接受一个字符串变量,所以我必须将其转换为数字parseInt()

我的所有变量都已在没有 localStorage 的情况下设置,因此我想知道现在添加 localStorage 的最佳方法是什么。

我无法理解 mozilla 或 W3schools 上的文档。

html javascript local-storage

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

Passport不会保留持久登录会话

我首先看过持有护照,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)

javascript mongodb node.js passport-local passport.js

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

这个arduino uno r3上的ISCP引脚在哪里?

我刚拿到一个拉力云盾.要将它连接到我的arduino uno,它说我必须"快捷"重置按钮旁边的引脚.http://wiki.dragino.com/index.php?title=Yun_Shield#Connect_to_Arduino_Uno

但是我的arduino没有那些针脚.IMG: Arduino的

顺便说一下,我以为我没有必要这样做,因为在我成功运行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)

arduino arduino-uno

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

Arduino Yun vs tessel vs espruino

我对使用javascript / nodejs编程微控制器感兴趣。

我首先得到了一个Arduino uno,并使用cylonjs对其进行了编程。我做了一个简单的机器人,但很快意识到这是行不通的,因为我需要始终将Arduino连接到计算机以运行节点程序。董事会还需要具有Wi-Fi,这样我就可以通过网络进行控制了。

有人建议我使用Arduino yun,因为它具有所有这些功能。这似乎很完美,但是我发现还有其他板也提供相同的功能,并且可以使用js。

  • Arduino云
  • 比格尔骨
  • 纳米级
  • 电动小鬼
  • 英特尔爱迪生
  • 特塞尔
  • 粒子
  • 埃斯普鲁伊诺

还有很多(例如树莓派,但我不需要或不需要整个操作系统)

在查看了所有可行的电路板之后,我意识到tessel和espruino是专门为javascript制作的。

所以我的问题是,这些板之间的主要区别是什么,尤其是Arduino Yun,Tessel和espruino。

谢谢!

编辑:镶嵌模块看起来真的很昂贵,我可能不会使用它们。-只是普通的别针。

javascript microcontroller arduino node.js tessel

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

将 oracle DB 中的 100 万条记录更新为 10k 批;

我必须将 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。

有什么建议?

sql database oracle plsql sqlplus

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