假设您需要执行一些依赖于某些临时文件的操作.由于我们在这里谈论Node,这些操作显然是异步的.为了知道何时可以删除临时文件,等待所有操作完成的惯用方法是什么?
这是一些显示我想要做的代码:
do_something(tmp_file_name, function(err) {});
do_something_other(tmp_file_name, function(err) {});
fs.unlink(tmp_file_name);
Run Code Online (Sandbox Code Playgroud)
但是如果我这样写,第三次调用可以在前两次有机会使用该文件之前执行.我需要一些方法来保证前两个调用已经完成(调用它们的回调),然后继续运行而不嵌套调用(并使它们在实践中同步).
我想过在回调上使用事件发射器并将计数器注册为接收器.计数器将接收已完成的事件并计算仍有待处理的操作数.当最后一个完成时,它将删除该文件.但是存在竞争条件的风险,我不确定这通常是怎么做的.
Node人如何解决这类问题?
假设我有这个HTML元素:
<div id="parent">
Hello everyone! <a>This is my home page</a>
<p>Bye!</p>
</div>
Run Code Online (Sandbox Code Playgroud)
用户用鼠标选择"家".
我希望能够确定#parent
他的选择中有多少个字符开始(以及#parent
他选择结束时有多少个字符结束).即使他选择了HTML标记,这也应该有效.(我需要它在所有浏览器中工作)
range.startOffset
看起来很有希望,但它只是相对于范围的直接容器的偏移量,并且仅当容器是文本节点时才是字符偏移量.
我正在寻找一种从node.js服务器实例中获取某种监控,统计或管理数据的方法 - 不确定要搜索什么或从哪里开始.任何建议表示赞赏
统计数据将是处理的请求(如果适用) - 连接数量等.
我正在尝试使用res渲染加载一些变量:
res.render('blog_edit', {title: 'edit your blog', posts: "something"});
Run Code Online (Sandbox Code Playgroud)
虽然标题加载精细帖子总是显示为未定义...这里是我试过的一些方法...
=posts
#{posts}
Run Code Online (Sandbox Code Playgroud)
并作为一个javascript变量
script
document.write(posts)
Run Code Online (Sandbox Code Playgroud)
他们都没有工作......你能帮忙吗?提前致谢
我正在使用node.js下载网页.但是,它没有收到任何数据块:
console.log('preparing request to ' + url)
u = require('url').parse(url)
var remote_client = http.createClient(80, u['host']);
var request = remote_client.request("GET", u['pathname'], {"host": u['host']});
console.log("request made")
request.addListener('response', function (response) {
response.setEncoding('binary')
var body = '';
response.addListener('data', function (chunk) {
body += chunk;
console.log('chunk received')
});
});
Run Code Online (Sandbox Code Playgroud)
最后一个控制台消息是"请求发出".没有"收到块"等的控制台消息.思考?
所以,我想使用node.js和http请求流水线,但我想只使用HTTP作为传输,没有别的.我有兴趣利用请求流水线功能.但是,我遇到的一个问题是,在发送对先前请求的响应之前,节点不会触发下一个请求的回调.我想要一种能够做到这一点的方法.我将在应用程序中处理结果的排序.有没有办法做到这一点?
HTTP RFC提到响应应该按顺序排列,但我没有看到node.js在第一个响应之前没有调用下一个回调的任何原因.理论上,应用程序可以将响应发送到第二个查询作为对第一个查询的响应(只要有一些方法让接收者知道它是对第二个查询的响应).
我正在写在node.js中的应用,最近我对我所有的项目意外错误.
当我尝试在浏览器中调用模型时,我总是得到一个
SyntaxError: Unexpected identifier
在我的代码中调用的任何函数.
例如,如果我继续"/ session/new",
我的代码是:
app.get('/session/new',function (req,res) {
res.render('sessions/new',{locals:{
redir:req.query.redir
}});
});
Run Code Online (Sandbox Code Playgroud)
我收到一个错误
SyntaxError: Unexpected identifier
at Object.Function (unknown source)
at Object.render (/usr/local/lib/node/.npm/jade/0.6.3/package/lib/jade.js:267:14)
at ServerResponse.render (/usr/local/lib/node/.npm/express/1.0.7/package/lib/express/view.js:334:22)
at ServerResponse.render (/usr/local/lib/node/.npm/express/1.0.7/package/lib/express/view.js:344:10)
at Object.<anonymous> (/Users/geraudmathe/Desktop/nodemongo/app.js:133:6)
at param (/usr/local/lib/node/.npm/connect/0.5.2/package/lib/connect/middleware/router.js:145:21)
at pass (/usr/local/lib/node/.npm/connect/0.5.2/package/lib/connect/middleware/router.js:161:10)
at Object.router [as handle] (/usr/local/lib/node/.npm/connect/0.5.2/package/lib/connect/middleware/router.js:167:6)
at next (/usr/local/lib/node/.npm/connect/0.5.2/package/lib/connect/index.js:232:23)
at next (/usr/local/lib/node/.npm/connect/0.5.2/package/lib/connect/index.js:234:17)
Run Code Online (Sandbox Code Playgroud)
其中/nodemongo/app.js:133:6在我的代码中是res.render.
无论我拨打什么代码,它都会发生.
我迷路了 ...
我是expressjs的新手,我想将一个expressjs应用程序部署到生产中.基于我的谷歌搜索,这是我在想的机架空间设置:
1负载均衡器+ 2服务器+永远运行应用程序
我的问题是:
我应该使用什么引擎来运行应用程序?nginx的?
我可以为每台服务器运行多少个app?
谢谢.
我正在寻找一个javascript库,试图在浏览器环境和nodejs(迭代,映射,可能是控制流)中提供相同的简单实用程序,以便可以更容易地跨服务器和客户端重用代码.我知道你可以破解任何JS库(YUI,jQuery,...)的部分并让它们在两个环境中工作,我只是想知道它是否已经完成或标准化.
我见过的最接近的是:https://github.com/kof/sharedjs
但它不完整,有一些奇怪的东西.我想知道在我分叉和黑客之前是否有更多的东西.
我正在构建一个node.js并使用connect-auth进行用户/通过身份验证,而我想要做的是允许用户长时间登录.玩游戏并查看源代码似乎connect-auth依赖于连接会话来维护经过身份验证的状态,因此一旦会话cookie过期(默认4小时),用户就会被注销.
一种选择是fork connect-auth和refactor不依赖于req.session,但这是非平凡的.另一种选择是将会话cookie的默认年龄更改为非常高,但我希望我的会话对象能够在会话中死亡.
有人有什么建议吗?我忽略了现有的解决方案吗?
谢谢!