Tag: asynchronous

nodejs数据结构是否通过devise是线程安全的?

阅读一个node.js相关的web文档,它是一个单线程的服务器。 所以它让我困惑,是否所有的数据结构默认在线程安全的节点服务器! 我有多个callback访问像这样的全局对象: callback1{ global_var['key'] = val; } callback2{ globalv_var['key'] = val; } “钥匙”有时可能相同,也可能不同。 global_var会是线程安全的吗? callback,如所预期的那样被callback,并在什么时候完成,没有特定的顺序。

如何在启动funcC()之前执行未定义数目的funcA()和funcB()?

我有一个应用程序在JavaScript中编写。 为了工作,我需要下载一堆文件。 由于我可以有很多文件可以很长,我做了下载asynchronous: function download_all(xml, callback){ var i=0; while(i<xml.smil.length) { download(xml.smil[i]); i=i+1; } i=0; while(i<xml.video.length) { download(xml.video[i]); i=i+1; } callback(xml); } 我的问题是:下载有一个callback,但因为可以有5个s​​mil和30个video,我怎么能确保所有的下载将在download_all的callback被调用之前? 我每次完成下载(在callback)之后递增一个variables,等等 while(smildlcompleted<xml.smil.length && videodlcompleted<xml.video.length) { sleep(1000); } 就像我在C中所做的一样,但是我找不到睡眠函数,它似乎与js / node.js的粗体语法相反。 有没有办法在callback之前等待所有下载完成? 我看过如何在多个其他函数完成后才执行Javascript函数? ,因为问题是相当相同的(funcA(),funcB(),当所有完成funcC()),但在我的情况下,funcA()和funcB()可以启动十到二十次之前,我需要做funcC()。 我试图修改其他问题的答案代码做我所需要的,但有人知道任何更简单的方法?

调用Node.js中的C#代码时出现意外的结果

所以我们有一个小型的node.jsnetworking服务器,它使用edge.js连接到一个C#写的DLL。 在我们的C#代码(这只是一个类库),我们正在调用一个方法,执行一个查询到Neo4j。 现在,如果我们在控制台应用程序中testing它,它可以正常工作,但是当我们运行node.js时,我们得到以下exception: System.AggregateException: One or more errors occurred. —> System.TypeInitiali zationException: The type initializer for 'FriendLibrary.API.Searching' threw an exception. —> System.NullReferenceException: Object reference not set to an instance of an object. at FriendLibrary.API.Searching..cctor() — End of inner exception stack trace — at FriendLibrary.API.Searching..ctor() at Startup.<<Invoke>b__1>d__4.MoveNext() — End of stack trace from previous location where […]

每个asynchronous任务在forEach中完成后执行一次callback

我正在编写一些PostgreSQL事务,并且一旦forEach中的每个函数都执行完毕,我需要执行callback。 这里是一些代码: var sql = "BEGIN;UPDATE object SET name = "+data.name+", object_subtype_id = "+data.object_subtype_id+" WHERE id = "+data.id+";"; db.driver.execQuery(sql, function(err, result) { data.object_subtype.object_property_type.forEach(function(item) { db.driver.execQuery("WITH upsert AS (UPDATE object_property SET value = '"+item.value+"' WHERE object_property_type_id = "+item.id+" AND object_id = "+data.id+" RETURNING *) INSERT INTO object_property (object_property_type_id, object_id, value) SELECT "+item.id+", "+data.id+", '"+item.value+"' WHERE NOT […]

了解node.js中的asynchronous函数

我正在学习nodejs。 我很难理解asynchronous函数是如何工作的。 我的问题与下面的代码有关。 我正在尝试按以下完全相同的顺序执行以下操作: 打开文件a.txt。 阅读。 打印其内容。 closures并logging文件已closures。 再次打开它。 用新内容覆盖它。 问题是,根据我得到的输出,似乎我不控制这些事件的顺序。 这是我在控制台中获得的输出: 只读21个字节/这是我的testing文件/只写了30字节/文件closures,并准备写入 所以,正如你所看到的,出于某种原因,程序在文件被closures之前正在写文件。 我试图closures它,logging它被closures,然后写入文件。 所以我认为我有一个控制事件stream的问题。 你能指出我做错了什么吗? 这个代码: var fs = require('fs'); //What I am trying to do here is: open a file a.txt, read it, print its content and then //close the file and log that it has been closed. //Then, open it again […]

在NodeJS中检查延迟的asynchronous代码

有点棘手的问题,首先,我有一个插件: exports.action = function(){ // Running synchronous code runMyRequest("path/to/url", function(){ // My code is asynchronous }); } 然后我从一个require调用这个插件: var plugin = require('myplugin') plugin.action(); // continue stuff 问题:有没有什么办法可以检查“我的代码是asynchronous的”是否正在运行或完成? 等等呢? 注意:在我的真实代码中,插件必须调用callback函数()。 这个问题的目的是做一些事情,如果插件的代码忘记调用我的callback()

我如何做一个函数的asynchronous工作,然后完成后从该函数返回一个值?

我正在使用一个库,需要我通过一个“validation”function。 在这个函数中,我需要validation一些input,如果通过则返回true否则返回false 。 问题是,我需要检查用户是否存在数据库中的这个validation函数和mongoose调用callback与结果。 如果我在callback中返回,它只是从callback函数而不是我的validation函数返回。 … validate: function (username) { User.findOne({ username: username }, function (err, user) { if (user) // User exists so we should return false from the validate function else // User does not exist so we should return true from validate. }); } 我正在尝试使用asynchronous库来解决这个问题,但asynchronous时它也会调用一个callback! 任何帮助表示赞赏。

asynchronous和并行处理

在这个问题上已经有不止一个post了,但是我仍然无法把这个问题弄得头晕目眩。 如果我不得不打电话给三个外部站点,Facebook,Twitter和Instagram,并且我使用asynchronous并行方式启动这三个站点,并且挂起等待Facebook响应的时间为20秒,但我不确定发生了什么。 这个电话是Twitter的开始和Instagram,他们都运行并可能在Facebook的调用之前完成,或者整个用户线程暂停,直到下一轮事件循环,另一个用户呼叫通过? 它看起来像后者给我们。 还是整个线程停下来等待? 根据请求,这里是代码的减less版本。 Service_requests是一组调用Facebook,Instagram和Twitter的函数。 还有一些其他的东西在这里,但它的肉很简单。 Async.parallel(service_requests, function (err, results) { if (err) { next(err); return; } var articles = []; for (var i = 0; i < results.length; i++) { articles = articles.concat(results[i]); } next(null, articles); });

我怎样才能在NodeJS中线程化image processing?

我在NodeJS上编写image processingWeb服务,在基本上我需要弄清楚如何使实际的image processing线程化。 当我通过Apache AB进行testing时,NodeJS只使用了一个内核,并且在这里做错了。 我如何重新devise这个简单的应用程序,以利用我的服务器CPU上的多个核心。 我放大了所有的input过滤,并简化了image processingfunction,让您了解应用程序结构,而不是长码位。 在app.js中 app.get('/generate/:q', function(req, res){ var textString = req.params.q; res.setHeader("Content-Type", "image/png"); res.end(generator.s()); }); 在generate.js中 var Canvas = require('canvas') , Font = Canvas.Font , fs = require('fs') , path = require("path") , plate = new Canvas.Image; //To keep plate in RAM between requests. fs.readFile(__dirname + '/plates/dhw132.png', function(err, squid){ if […]

nodejs中的asynchronous函数

这只是关于nodejs中asynchronous函数的一个小问题,也是创build它们的好方法。 以下内容接受参数存储库和扩展名,并返回给定存储库中给定扩展名的文件列表 跑步 $ node app /path/to/some/reposity someExtension module.js文件 //modules.js var fs = require('fs'); var path = require('path'); module.exports = function(dir, ext, callback){ //do something fs.readdir(dir, function(err, data){ if(err){ //EDIT process.nexTick(function(){ callback(err); }); // } if(data){ var compteur = 0; var block = []; for(var i =0 ; i < data.length ; i++){ if(path.extname(data[i]).slice(1) == […]