Tag: 同步

如何在Node Js应用程序的多个实例之间同步对象

是否有任何locking节点JS应用程序中的任何对象。 是否有多个应用程序实例可用某些function不应该并发运行。 如果实例A函数完成,应该解锁该对象/键或应用程序的一些标识符和B实例应该检查它的解锁是否应该运行一些function。 任何对象或键都可以用来识别locking和解锁function。 如何在具有多个实例的NodeJS应用程序中这样做。

如何在使用NodeJS并保存到MongoDB时同步多个RESTFul请求?

我一直在尝试使用NodeJS来实现RESTFul API,并且使用Mongoose(MongoDB)作为数据库后端。 以下示例代码在同时发送请求时使用相同的用户名注册多个用户,这不是我所期望的。 虽然我试图添加一个检查! 我知道这是因为NodeJS的asynchronous性质,但我找不到一个方法来正确执行此操作。 它看起来像“findOne”方法立即返回,导致registerUser返回,然后处理另一个请求。 顺便说一句,我不想​​检查现有的用户与一个单独的API函数,我需要在注册阶段检查。 有没有办法做到这一点? Controller.prototype.registerUser = function (req, res) { Users.findOne({'user_name': req.body.user_name}, function(err, user) { if(!user) { new User({user_name: req.body.user_name}).save(function(err) { if(!err) { res.send("User saved"); } else { res.send("DB Error: Could not save user!"); } }); } else { res.send("User exists"); } }); }

如何控制NodeJS中的应用程序stream

我在nodeJS中编写我的第一个应用程序。 我正在写一个电报机器人,我想知道如何控制应用程序的stream程,因为它是asynchronous的。 我来自一个简单的,程序性的,一个接一个的php背景。 比方说,在我的机器人,收到任何消息时,首先程序必须确保用户的详细信息在caching或数据库中,然后再继续。 检查完成后,可以继续。 我打算通过使用一个标志variables来做到这一点,但由于JavaScript的asynchronous性质,无法完成。 我不知道如何去做这件事。 我是否将侦听器分配给对象并发出事件来控制stream? 这是我的代码 const fs = require('fs'); // Establish connection with cache and database const mysql = require('mysql-wrapper'); const Memcached = require('memcached'); const memcached = new Memcached('localhost:11211'); const bb = require('bot-brother'); var settings = { host: 'localhost', database: 'test', user: 'root', }; var qb = require('node-querybuilder').QueryBuilder(settings, 'mysql', 'single'); //Load […]

Nodejs(同步)无法find光纤二进制文件

我见过类似的问题,但没有真正的解决scheme,但我工作(大多数用户只是重新安装光纤或meteor(我不使用meteor))。 我已经将nodejs模块Sync添加到了我的nodejs 0.12.6项目中。 它的依赖是使用Sync自动安装的Fibers模块。 现在我想要通过require加载同步,但是失败并显示消息 … /win32-x64-v8-4.3/fibers.node未find 这是正确的:在同步/ node_modules /纤维/ bin /没有目录名为win32-x64-v8- 4.3,只有win32-x64-v8-4.2和重命名没有解决问题(本来是太简单了).. 🙈 我怎么解决这个问题? 这怎么可能发生? 最后一个数字(4.3)的含义是什么? 我想这是Windows,64位,Javascript V8引擎,然后呢? 纤维版本? 任何想法或提示? 更新: 我试图升级节点到0.12.6,但没有任何改变。 我发现4.3是什么,这是V8版本。 那么,当用电子运行我的应用程序时,它是v8:“4.3.61.21” 。 用节点检查版本时,是3.28。 所以这可能是电子“故障”? 更新#2: 好吧,我发现电子是基于io.js而不是节点。 这解释了不同的V8版本。 但仍然没有解决scheme。 使用最新的io.js(2.3.3)安装光纤时,它testing4.2二进制,但电子需要4.3 更新#3: 即使使用与电子版本相同的io.js 2.3.1版本,也只安装了4.2版本。 更新#4: 现在,我尝试了http://electron.atom.io/docs/v0.27.0/tutorial/using-native-node-modules/ (电子版本为0.29.1)中描述的所有三种方法 – 仍然没有解决scheme。 v8-4.3没有任何二进制文件,只有v8-4.2。 🙁 解: 看到我的答案在下面。 🙂

如何处理循环中的asynchronousNode.js

我有这样一个循环: var i,j,temparray,chunk = 200; for (i=0,j=document.mainarray.length; i<j; i+=chunk) { temparray = document.mainarray.slice(i,i+chunk); var docs = collection.find({ id: { "$in": temparray}}).toArray(); docs.then(function(singleDoc) { if(singleDoc) { console.log("single doc length : " + singleDoc.length); var t; for(t = 0, len = singleDoc.length; t < len;t++) { fs.appendFile("C:/Users/x/Desktop/names.txt", singleDoc[t].name + "\n", function(err) { if(err) { return console.log(err); } […]

JavaScript同步循环

当我的testing数据扩展到生产工作时,我一直在关注JavaScript的asynchronous行为。 我有一个for循环,我知道将在成千上万的范围内,节点暂停一个for循环,并回到它,或者我可以安全地假设节点将返回我的函数之前执行循环完成? 这是问题的循环: function fixData(dataset, blockcount){ for (var i = 0, len = dataset.length; i < len; i++) { var obj = dataset[i]; obj._id = obj.name; obj.expires = blockcount + obj.expires_in; delete obj.expires_in; } return dataset; }

同步forEach循环(等待它结束)

我在Node.js中有一个函数,它接受一个数组并循环,对每个元素进行一些耗时的计算。 这是一个超简化版本的function: var analyze_data = function (data) { data.forEach(function (elm) { if (elm.myProp == true) { return true; } }); return false; } 从本质上讲,如果任何元素的属性myProp等于true,我希望函数返回true。 如果没有元素满足这个条件,函数应该返回false。 但是,代码永远不会等待forEach循环完成。 换句话说,如果数组中的第100个元素满足条件,则函数应该返回true。 相反,它跳过return false; 并在forEach循环有时间完成之前返回false。 有针对这个的解决方法吗? 编辑 所以我意识到我简化了我的问题 – 我实际上使用了Node.js包es6-promise ,而我的代码看起来更像这样: var analyze_data = function (data) { return new Promise(function (resolve, reject) { data.forEach(function (elm) { if (elm.myProp == true) […]

服务器端同步js(node.js)

我愿意使用node.js来实现一些服务器端代码。 node.js(js)是否有内build的同步。就像我们有 在java中synchronized关键字? 我可以使一些代码块synchornized?以便在一次只有线程可以执行它?

等待一个asynchronous函数在Node.js中返回

假设,我在Node.js中有一个asynchronous函数,基本上是这样的: var addAsync = function (first, second, callback) { setTimeout(function () { callback(null, first + second); }, 1 * 1000); }; 现在我当然可以用asynchronous风格调用这个函数了: addAsync(23, 42, function (err, result) { console.log(result); // => 65 }); 我想知道的是,是否可以使它以某种方式同步调用此function。 为此,我想有一个包装函数sync ,基本上做以下事情: var sync = function (fn, params) { var res, finished = false; fn.call(null, params[0], params[1], function (err, result) { […]

在承诺fs.writeFile,asynchronous同步的东西

我需要一些帮助我的代码。 我是nodejs的新手,遇到很多麻烦。 我在做什么: 1)使用Amazon产品(ASIN's)获取.txt文件 2)使用amazon-product-api软件包获取所有产品 3)将每个产品保存在.json文件中 我的代码不工作。 我想我搞砸了这个asynchronous同步的东西 – 帮助我! var amazon = require('amazon-product-api'); var fs = require('fs'); var client = amazon.createClient({ awsId: "XXX", awsSecret: "XXX", awsTag: "888" }); var array = fs.readFileSync('./test.txt').toString().split('\n'); for (var i = 1; i < array.length; i++) { var ASIN = array[i]; return client.itemLookup({ domain: 'webservices.amazon.de', responseGroup: 'Large', idType: 'ASIN', […]