Node.js看起来很有趣,但我必须错过一些东西 - 不是Node.js只调整为在单个进程和线程上运行吗?
那么它如何扩展多核CPU和多CPU服务器?毕竟,尽可能快速地制作单线程服务器,但是对于高负载我想要使用多个CPU.同样可以使应用程序更快 - 似乎今天的方式是使用多个CPU并并行化任务.
Node.js如何适应这张图片?它的想法是以某种方式分发多个实例或什么?
我有一个关于Array.forEach
JavaScript 的本机实现的问题:它是否异步?例如,如果我打电话:
[many many elements].forEach(function () {lots of work to do})
Run Code Online (Sandbox Code Playgroud)
这会不会阻塞吗?
我想在JS中做一些资源密集的任务.对于这个问题,我们假设它们是一些繁重的计算,而不是系统访问.现在我想同时运行任务A,B和C,并在完成后执行一些功能D.
该异步库为此提供了一个很好的脚手架:
async.parallel([A, B, C], D);
Run Code Online (Sandbox Code Playgroud)
如果我正在做的只是计算,那么它仍将同步运行(除非库将任务放在不同的线程上,我预计不是这种情况).我该如何让它实际上是平行的?通常由异步代码完成的事情是什么,以阻止调用者(使用NodeJS时)?它是否开始了儿童过程?
javascript parallel-processing multithreading asynchronous node.js
好吧,这可能有点直言不讳,但Node.js的重点是什么
我已经注意到它主要是通过CloudFoundry,但不太确定它应该做什么.但是我猜它可能是一个非常大的东西,为什么VMWare会支持它.
提前致谢.
我最近开始听到很多关于Node.js. 虽然我理解了它可以做的一些事情,即创建一个Web服务器,但我想知道你是否可以在生产环境中为我提供一个坚实的推理.
本文为使用Node.js作为开发工具奠定了坚实的基础,实质上说明它可以提供后端环境的可用性而无需后端体验.我也听说过很多开发人员在生产项目中使用Node.js(例如Codepen),但是当我在那里建立了Web服务器(如LAMP堆栈)时,我根本不明白它是如何有用的.
我很想花时间学习Node.js,因为它越来越受欢迎,但因为我确实有一个相当坚实的后端基础,我很好奇是否有必要.
简而言之,Node.js的一些最有用的方面是什么以及为什么有人需要在生产环境中使用?
我一直在进行基于网络的聊天,类似于Facebook聊天.在当前状态下,我会监听传入聊天并检查现有聊天中的新消息是做...
setTimeout(function() { listenForIncomingChat() }, 500);
setTimeout(function() { checkForIncomingMessages( ...params... ) }, 500);
Run Code Online (Sandbox Code Playgroud)
...这样做setTimeout()
确保这些功能始终在运行.根据我打开的聊天窗口的数量,Firebug的控制台可能会疯狂地使用POST
s到服务器:)
显然这是非常低效的,但这是我能让事情发挥作用的唯一方式.现在我正在寻找让它变得更好的方法,正确地做到这一点!
现在,我听说过Comet Programming,这是与服务器打开长期HTTP连接的方法,但我不熟悉Comet背后的技术或思想.用于HTML5的WebSockets可能更好,但由于没有全面展开,也不是所有浏览器都支持,我会坚持使用的方法.
根据维基百科,有几种使用Comet风格开发的方法:Streaming(隐藏的iFrame,XMLHttpRequest)或带有长轮询的AJAX(XMLHttpRequest,Script标签).但是,我对此一无所知.我也读过有关AJAX推送引擎(APE)的内容,看起来很酷,但我暂时不想使用第三方.
我最近偶然发现了WebChat 2.0,所以我将通过源代码来查看它是如何工作的.
那么在哪里可以找到有关如何开始使用此类项目的示例代码/教程?我如何实施Comet技术?如何设置与服务器的长期HTTP连接?
我的最终目标是使每个服务器实例的node.js更具成本效益.
我不是在运营游戏或聊天室,而是为客户提供简单的网站.我想在一台服务器上容纳多个客户端,但是有多个网站使用主机头映射运行端口80.我想仍然使用快递,因为我正在做,但它更像是从端口80到其他节点应用程序的路由事件,如果这是可能的.如果它以这种方式完成节点可以更便宜,但目前它对我的目的而言更昂贵,因为如果在端口80上运行,每个客户都需要自己的盒子.此外,我的动机是关注节点开发但是必须有理由这样做所以在成本方面.
我在Windows中为ASP.NET做了很多这样的事情,因为IIS支持这种开箱即用的功能,我知道这对Apache来说也是正常的.
如果这不是正确的问题或者给予建设性的批评而不是随机的downvote,请随意将其移至堆栈交换中的另一个论坛.谢谢.
更新
我采用的方法是使用静态托管(通过gatspy和s3),然后使用API,通过来自客户端的邮件和来自服务器的API密钥注册域名,并在站点更改时定期生成静态站点,但感谢所有建议!
我是一个完整的Node.js新手,并且在基础知识上苦苦挣扎.在服务器上运行此代码:
var http = require("http"),
sys = require("util"),
io = require("socket.io"),
GlobTrie = require("glob-trie.js");
Run Code Online (Sandbox Code Playgroud)
在第一次要求时给我一个例外:
Uncaught ReferenceError: require is not defined
(anonymous function)
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
此致,本.
JavaScript是单线程语言,因此它一次只执行一个命令.异步编程通过Web API(用于事件处理的DOM,用于AJAX调用的XMLHttpRequest,用于setTimeout的WindowTimers)和由浏览器管理的事件队列来实现.到现在为止还挺好!现在考虑一下,以下非常简单的代码:
$('#mybox').hide(17000);
console.log('Previous command has not yet terminated!');
...
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释上面的基本机制吗?由于.hide()还没有完成(动画持续17秒)并且JS引擎正在处理它并且它能够一次执行一个命令,它以哪种方式进入下一行并继续运行剩下的代码?
如果您的答案是动画创建了promises,那么问题仍然是:JavaScript如何同时处理多个事物(执行动画本身,在承诺的情况下观察动画队列并继续执行下面的代码). ..).
此外,我无法解释jQuery中的promises如何工作,如果他们必须观察他们的父Deferred对象,直到它被解析或拒绝 ,这意味着代码执行,同时执行剩余的代码.这怎么可能在单线程方法中?理解AJAX调用我没有问题,因为我知道它们被JS引擎带走了......
我正在努力找到一个好的模式来执行一堆并行任务.
让我来定义一些例子.任务a, b, c, d, e, f, g
执行的a(function(er, ra){//task a returned, ra is result})
,这样做b
对g
也有一些工作,应该是执行一些任务完成后,让我们给他们打电话ab, bc, abc, bd, bcd, af, fg
,表示当a
和b
返回ab(ra, rb)
应立即执行,而当b
和c
退换,bc(rb, rc)
应立即执行,如果a
,b
,c
全部返还,abc(ra, rb, rc)
应执行.
对于最简单的情况,如果只有a
和b
,我可以做这样的事情:
(function(cb){
var count = 2, _ra, _rb;
function update(){if(--count == 0) cb(null, _ra, _rb)}
a(function(er, ra){_ra = ra; update()});
b(function(er, ra){_rb …
Run Code Online (Sandbox Code Playgroud) javascript parallel-processing concurrency design-patterns node.js
node.js ×8
javascript ×5
asynchronous ×2
ajax ×1
arrays ×1
chat ×1
comet ×1
concurrency ×1
foreach ×1
node-cluster ×1
polling ×1
require ×1
webserver ×1