相关疑难解决方法(0)

如何制作非阻塞的javascript代码?

如何进行简单的非块Javascript函数调用?例如:

  //begin the program
  console.log('begin');
  nonBlockingIncrement(10000000);
  console.log('do more stuff'); 

  //define the slow function; this would normally be a server call
  function nonBlockingIncrement(n){
    var i=0;
    while(i<n){
      i++;
    }
    console.log('0 incremented to '+i);
  }
Run Code Online (Sandbox Code Playgroud)

输出

"beginPage" 
"0 incremented to 10000000"
"do more stuff"
Run Code Online (Sandbox Code Playgroud)

如何形成这个简单的循环以异步执行并通过回调函数输出结果?这个想法是不阻止"做更多的东西":

"beginPage" 
"do more stuff"
"0 incremented to 10000000"
Run Code Online (Sandbox Code Playgroud)

我已经尝试过关于回调和延续的教程,但它们似乎都依赖于外部库或函数.他们都没有在真空中回答这个问题:如何编写Javascript代码是非阻塞的??


在询问之前,我非常努力地寻找这个答案; 请不要以为我没看.我发现的一切都是Node.js特定的([1],[2],[3],[4],[5])或其他特定于其他函数或库([6],[7],[8],[9],[10],[11]),特别是JQuery和setTimeout().请帮我用Javascript编写非阻塞代码,而不是Javascript和Node等Javascript编写的工具. 请在将其标记为重复之前重新阅读该问题.

javascript asynchronous callback nonblocking

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

Socket.IO多线程吗?

我有一个socket.io监听套接字的服务器:

io.sockets.on('connection', function(socket){
    socket.on('myEvent', function(data){
        socket.emit('eventReceived', { status: 1 });
    });
});
Run Code Online (Sandbox Code Playgroud)

这段代码是否在多线程中工作?如果两个客户端将发出该myEvent事件,它将同时为两个客户端工作?还是会一个接一个地处理?

非常感谢!

node.js socket.io

7
推荐指数
1
解决办法
2549
查看次数

不理解回调和非阻塞示例 - Node.js

在动手节点一书中,作者举了一个阻塞I\O的例子,

var post = db.query("select * from posts where id = 1");
doSomethingWithPost(post)
doSomethingElse();
Run Code Online (Sandbox Code Playgroud)

作者说在第1行完成执行db查询之前没有执行任何操作

然后,他显示了非阻塞代码

callback = function(post){
doSomethingWithPost(post)
}

db.query("select * from posts where id = 1",callback);
doSomethingElse();
Run Code Online (Sandbox Code Playgroud)

在查询执行之前,这也不会阻塞吗?

因此,在查询完成之前,不会执行doSomethingElse.

node.js

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