Node.JS:如何将variables传递给asynchronouscallback?

我确定我的问题是基于对node.js中asynchronous编程的理解不足,但是在这里。 例如:我有一个我想要抓取的链接列表。 当每个asynchronous请求返回时,我想知道它是哪个URL。 但是,可能是因为竞争条件,每个请求返回与URL设置为列表中的最后一个值。 var links = ['http://google.com', 'http://yahoo.com']; for (link in links) { var url = links[link]; require('request')(url, function() { console.log(url); }); } 预期产出: http://google.com http://yahoo.com 实际产出: http://yahoo.com http://yahoo.com 所以我的问题是: 如何将URL(通过值)传递给callback函数? 要么 链接HTTP请求的正确方法是什么,使它们顺序运行? 要么 还有什么我失踪? PS:对于1.我不想要一个解决scheme,检查callback的参数,而是一个callback的一般方式知道variables'从上面'。

运行npm脚本时如何抑制输出

我决定尝试npm脚本作为构build工具,到目前为止,我喜欢它。 我想解决的一个问题是当运行一个脚本来运行jshint,当一些事情没有通过linting我得到了大量的“npm错误! 线。 我想压制这些,因为linter的输出更有意义。 有没有一种好的方法来设置这个全球性,有没有一种方法来为每个脚本运行设置它?

在node.js中使用Async瀑布

我有2个function,我正在asynchronous运行。 我想用瀑布模型来写。 事情是,我不知道如何.. 这是我的代码: var fs = require('fs'); function updateJson(ticker, value) { //var stocksJson = JSON.parse(fs.readFileSync("stocktest.json")); fs.readFile('stocktest.json', function(error, file) { var stocksJson = JSON.parse(file); if (stocksJson[ticker]!=null) { console.log(ticker+" price : " + stocksJson[ticker].price); console.log("changing the value…") stocksJson[ticker].price = value; console.log("Price after the change has been made — " + stocksJson[ticker].price); console.log("printing the the Json.stringify") console.log(JSON.stringify(stocksJson, […]

在Visual Studio 2017中更新节点版本

有谁知道在Visual Studio 2017中更新节点的方法吗? 我在开发PC上安装了Node 6,但是VS2017似乎附带了一个Node 5的捆绑副本,这意味着在我的命令行上运行npm install各种包,比如node-sass和Node 6的绑定,所以当我然后从VS任务运行程序运行gulp任务由于不匹配的版本而翻倒。 我发现VS节点安装在C:\Program Files (x86)\Microsoft Visual Studio 14.0\Web\External但我有点不愿意只是黑客和replace它。 任何人有任何升级的经验吗? 我知道我可以通过降级PC上的版本来进行同步,但似乎是倒退了。

基于NodeJS的HTTP客户端:如何validation请求?

这是我必须做一个简单的GET请求的代码: var options = { host: 'localhost', port: 8000, path: '/restricted' }; request = http.get(options, function(res){ var body = ""; res.on('data', function(data) { body += data; }); res.on('end', function() { console.log(body); }) res.on('error', function(e) { console.log("Got error: " + e.message); }); }); 但是“/ restricted”这个path需要一个简单的基本HTTPauthentication。 我如何添加凭据进行身份validation? 在NodeJS手册中,我找不到与基本httpauthentication相关的任何东西。 提前致谢。

为什么node.js不具有本地DOM?

当我发现NodeJS是build立在V8 Javascript引擎上的时候,我认为“好的,网页抓取将会更容易,因为页面将会像浏览器一样呈现,其中支持XPath的”原生“DOM以及页面中的任何AJAX调用执行“。 为什么当它使用与Chrome相同的JS引擎时,它不具有本地DOM? 同样,为什么它没有在检索页面中运行JS的模式? 我不理解JavaScript引擎与Web浏览器中的引擎? 🙂 非常感谢!

为什么node.js是asynchronous的?

没有人真正问过这个问题(从我提出的所有“build议”中,在我问到这里之前,也从中寻找)。 那么为什么node.js是asynchronous的呢? 从我在一些研究中推论出来的: 像PHP和Python这样的语言是脚本语言(我可能是错误的脚本语言的实际语言),而JavaScript不是。 (我想这是源于JS不编译的事实?) Node.js在单线程上运行,而脚本语言使用multithreading。 asynchronous意味着无状态,连接是持久的,而同步是(几乎)相反的。 也许答案是在上面的某个地方find的,但是我还不确定。 我的第二个也是最后一个与这个话题有关的问题是: JavaScript可以变成同步语言吗? PS。 我知道你们中的一些人会问“你为什么要让JS同步?” 在你的答案中,但事实是,我没有。 我只是问这些types的问题,因为我确信有更多的人在那里,而不仅仅是我自己曾经想过这样的问题。

你怎么能通过cron作业执行一个Node.js脚本?

很简单,我有一个月我要执行的节点脚本。 30 6 1 * * node /home/steve/example/script.js 但这不起作用,可能是因为path或命令正在运行的shell。 我已经尝试了通过cron执行节点的下列方法(使用-v进行testing): steve@atom:~$ node -v v0.4.2 steve@atom:~$ sh node -v sh: Can't open node steve@atom:~$ bash node -v /usr/local/bin/node: /usr/local/bin/node: cannot execute binary file steve@atom:~$ /usr/local/bin/node -v v0.4.2 steve@atom:~$ sh /usr/local/bin/node -v /usr/local/bin/node: 1: Syntax error: "(" unexpected steve@atom:~$ bash /usr/local/bin/node -v /usr/local/bin/node: /usr/local/bin/node: cannot execute binary […]

在Node.js中复制到剪贴板?

有没有办法可以在Node.js中复制到剪贴板? 任何模块或想法是如此之久? 我在桌面应用程序上使用Node.js。 希望这清楚了为什么我希望它能够实现这一点。

Node.js,在app.configure中expression和使用开发与生产

什么是最简单的方法让expression知道我在什么环境? 例如,我想要做下面的连接到redis取决于我在什么env。这可以从命令行完成吗? app.configure('development', function(){ app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); var r = require("redis").createClient(6379,'127.0.0.1'); }); app.configure('production', function(){ app.use(express.errorHandler()); r = redis.createClient(6379,'46.137.195.230', { detect_buffers: true }); });