Tag: 同步

节点js FS accessSync设置全局variablespath失败

我在nodejs的FS核心中遇到同步function问题。 例如我有这个语法的nodejs文件 var y; fs.accessSync("real_exixs_path", fs.R_OK | fs.W_OK, function(err) { if (err) { console.log("File error!"); } else { y = "foo"; } }); 在运行这个代码之后,全局的“y”variables仍然是undefined ,它不会被设置为“foo”。 有人能帮我吗?

同步使用Node.js下载N个远程文件

我正在使用一个简单的应用程序使用Node.js需要执行以下操作时给予一个有效的URL 检索远程页面的HTML,保存在本地。 蜘蛛的HTML(使用cheerio)并logging所有的JS和CSS文件引用。 为每个JS / CSS文件创buildHTTP请求并通过文件名将其保存到服务器。 压缩html,css和js文件并将结果文件stream式传输到浏览器。 我有1和2个工作,而#3的前半部分,但我遇到的下载同步性的问题。 我的代码运行得太快,为CSS和JS文件生成文件名,但没有任何内容。 我猜这是因为我的代码不同步。 问题是,我不能预先知道有多less文件可以在ZIP文件生成之前,所有文件都必须在那里。 这是我的应用程序的stream程,因为它目前存在。 我省略了辅助方法,因为它们不会影响同步性。 你们能提供什么我应该做的input吗? http.get(fullurl, function(res) { res.on('data', function (chunk) { var $source = $(''+chunk), js = getJS($source, domain), css = getCSS($source, domain), uniqueName = pw(), dir = [baseDir,'jsd-', uniqueName, '/'].join(''), jsdir = dir + 'js/', cssdir = dir + 'css/', html = rewritePaths($source); // […]

将承诺包装到同步function中

我正在编写一个节点CLI,其中同步行为通常比asynchronous更合适,我想能够利用以下约定: # Write functional code as an async function which returns a Promise function foobar() { … } # Uses async function but blocks on promise fulfillments function foobarSync() { … } 所以例如 – 使用RSVP承诺实现 – 我已经编写了以下用于调用shell脚本的asynchronous函数: var shell = function (params,options) { options = extend({timeout: 4000},options); var commandResponse = ''; var errorMessage =''; // […]

NodeJS同步客户端

我使用socket.io和nodejs, 我有一个服务器,我用它作为我的nodeJS服务器。 我想要做的是根据客户端 – >服务器 – >客户端发送的消息移动客户端 例如; client1向服务器发送消息“MOVE-RIGHT”。 服务器将此消息redirect到所有客户端如“MOVE-RIGHT-CLIENT1”,并根据此消息,所有客户端开始将client1移动到正确的方向。 问题是,根据networking状态,所有客户端可能有不同的延迟。 例如,如果服务器 – >客户端1通信在50毫秒内发生,则服务器 – >客户端2通信可能在250毫秒内发生。 因此,客户端1提前将近200毫秒执行此项任务。 所以我们可以说这两个动作是不同步的,因为其中一个动作比其他动作早。 如您所知,客户端和服务器之间的延迟可能因每个客户端而不同,并且对于同一客户端的每条消息也可能不同。 我的问题是,我应该使用哪种方法来同步这些客户端,同时完成他们的工作。 有没有关于这个socket.io或nodejs的任何function? 你会为我推荐什么?

PostgreSQL与elasticsearch(保持同步) – nodeJS

我想设置postgres和elasticsearch。 但在将数据投入到elasticsearch之前,我想要防止networking或服务器宕机时的数据丢失。 阅读了这个主题后: https : //gocardless.com/blog/syncing-postgres-to-elasticsearch-lessons-learned/ 。 我想出了3个解决scheme。 创build一个数据库表ei: store ,并添加任何新的/更新的数据给它。 查询期间:将数据插入store 。 select新数据: SELECT data FROM store WHERE modified > (:last modified time from elasticsearch) 将“新”数据发送到elasticsearch 使用redis pub/sub /订阅请求,并使elasticsearch侦听/订阅即将到来的数据。 如果elasticsearch中断,数据将在队列中 在交易过程中捕捉任何错误到elasticsearch并将数据保存到一个安全的地方(ei:上面提到的store表)。 然后有一个cron工作推回这个数据。 当然最简单的事情就是直接向elasticsearch插入数据。 但是这样做可以防止数据在腐败期间存储在安全的地方。 1在我看来太慢了,不像2 。 而且3需要维护error handling代码。 现在2是我的select。 有没有更好的方法来做到这一点? 我想听听你的意见和新的build议 :d

NodeJs,同步开发的模式

我是新的NodeJs和Express框架。 我已经明白,节点在服务器端只有一个线程工作。 所以,我注意到这导致我一些问题,以正确开发我的应用程序。 在我的路线文件夹中,我有一个文件index.js。 这个文件pipe理用户从app.js中提出的导航。 所以我决定创build一个路由function“testing”。 在这个函数中,我只有那个代码 exports.test = function(req, res){ res.render('test', {}); }; 这么简单,那么简单 这是在我的视图文件夹撕裂模板test.jade。 好极了! 但是我想使这个过程复杂化。 在这个testing路由function中,我想从我的MYSQL数据库加载一些内容。 为此,我在文件夹node_modules里创build了一个文件夹Models ,里面只有2个文件,第一个是mysqlConnection.js ,它导出variablesDB以便进行查询。 var mysql = require('mysql'); var DB = mysql.createConnection( { host : 'localhost', user : 'root', password : '', database : 'test', } ); DB.connect(); module.exports = DB; 在第二个文件articles_class.js中 ,我只有 var DB = require('models/mysqlConnection'); […]

快速模块function中的查询

我用node.js和express框架使用Sequelize。 我需要在我的应用程序模块中实现一个function,该function从数据库提供特定的信息。 我目前的做法是这样的: var app = express(); app.provide = function(){ models.Project.findAll({ include: [{ all: true}]}).then(function(data){ return data; }); }; module.exports = app; 我的问题是查询运行asynchronous和提供函数在查询完成之前返回一个“undefined”。 如果返回语句不在callback中,则按预期工作,但在那里我没有任何数据: var app = express(); app.provide = function(){ models.Project.findAll({ include: [{ all: true}]}).then(function(data){ }); return "test"; }; module.exports = app; 是否有可能像这样从数据库中返回数据? 提前致谢!

使用'readline'同步执行node.js程序

我遇到了一些问题,使节点的asynchronous性与我合作,经过几个小时的callback和Googlesearch; 我终于转向你们。 我有一个程序,需要使用节点的readline模块从文件中读取行。 该文件包含传递给在我的节点程序中定义的一些asynchronous函数的数据。 一旦所有的数据都被成功的读取和处理,这个数据需要被parsing成JSON格式,然后输出。 我的问题是,当我调用: readLine.on('close', function() { …… } ,这是在asynchronous函数完成运行之前运行,因此我留下一个什么也没有输出,但程序一直运行asynchronousfunction。 我创build了一个简单的函数框架,可以更清楚地解释我的情况: function firstAsyncFunc(dataFromFile) { //do something asynchronously return processedData; } function secondAsyncFunc(dataFromFile) { //do something else asynchronously return processedData; } //create readline var lineReader = require('readline').createInterface({ input: require('fs').createReadStream('data.txt') }); //array to hold all the data processed var totalDataStorage; //read file lineReader.on('line', function(line) { […]

使用arangojs和sync的NodeJS:忽略.sync()后的所有内容?

我想使用NodeJS从MySQL数据库读取60klogging,并将它们写入到ArangoDB数据库。 我会稍后使用ArangoDB的聚合function来处理我的数据集。 来自PHP,脚本通常运行同步,因为我相信这是有道理的,我最初(天真)的尝试是让我的NodeJS脚本也运行同步。 但是,它不能按预期工作: 我打印到控制台,通过.sync()调用函数连接到ArangoDB服务器,并打印所有现有的数据库,然后打印到控制台再次。 但是,对我的ArangoDB函数的同步调用之下的所有内容都被完全忽略(不会再打印到控制台,也不会在这里执行任何其他操作)。 我忽略了什么? 在.sync()调用的函数中, .done()是否会造成麻烦? var mysql = require('node-mysql'); var arango = require('arangojs'); //var sync = require('node-sync'); // Wrong one! var sync = require('sync'); function test_arango_query() { var db = arango.Connection("http://localhost:8529"); db.database.list().done(function(res) { console.log("Databases: %j", res); }); return "something?"; } sync(function() { console.log("sync?"); var result = test_arango_query.sync(); console.log("done."); // DOES NOT […]

如何使节点js的asynchronousfunction在节点js中同步处理

在节点js我有一个aws API调用for循环。 var prodAdvOptions = { host : "webservices.amazon.in", region : "IN", version : "2013-08-01", path : "/onca/xml" }; prodAdv = aws.createProdAdvClient(awsAccessKeyId, awsSecretKey, awsAssociateTag, prodAdvOptions); var n=100//Just for test for (var i = 0; i <=n; i++) { prodAdv.call("ItemSearch", { SearchIndex : "All", Keywords : "health,fitness,baby care,beauty", ResponseGroup : 'Images,ItemAttributes,Offers,Reviews', Availability : 'Available', ItemPage : […]