Articles of asynchronous

将asynchronous函数转换为同步函数

我使用某个Node.js类来进行文本分类。 最简单的forms如下所示: function TextCategorizer(preprocessors) { … } “预处理器”是一种forms的函数的数组: function(text) { return "<modified text>" } 例如,它们可以用于删除标点符号,转换为小写字母等。 我可以像这样使用TextCategorizer: var cat = newTextCategorizer(preprocessors); cat.train(text1,class1); cat.train(text2,class2); … console.log(cat.classify(text3,class3); 预处理器被调用以便为每个训练文本和分类文本。 现在,我需要添加一个新的预处理函数 – 一个拼写纠正器。 最好的拼写纠正,我发现asynchronous(通过networking服务),所以,function看起来像这样: correctSpelling(text, callback) { … callback(corrected_version_of_text); } 即它不返回一个值,而是用该值调用一个callback函数。 我的问题是:我怎样才能使用correctSpelling函数,作为我发送到TextCategorizer的预处理器数组中的预处理器之一?

Node.js:asynchronous代码+ jsclosures的麻烦

我无法适应Node的单线程+asynchronous性,再加上javascript的函数闭包。 假设我有这样的东西: function foo(bar) { someAsyncFunction(function callback(err) { // do stuff with 'bar' }); } 请让我知道,如果我失去了一些东西; 但我的理解是: 由于closures, callback会有一个参考 bar 但是,如果在bar = 20时调用foo一次,那么在第一次调用callback 之前再次使用bar = 42 ,那么bar在第一次调用foo callback中将是42。 换一种说法: foo(20) #1 someAsyncFunction(function callback() {}) #1 foo(42) #2 someAsyncFunction(function callback() {}) #2 callback() #1 ——->使用bar = 42 callback() #2 ——->使用bar = 42 我纠正这个吗? (如果bar是原始对象还是对象,这是否重要?)。 如果是这样,我可以做些什么来确保callback使用正确的值的bar (ASIDE从传递bar一直向下和调用堆栈)? […]

Vertx,Node或Play,以asynchronous方式调用多个Web服务

我正在开发一个项目,在这个项目中,我需要调用多个concurent Web服务(至less5个Web服务)asynchronous。 为此,该框架可以用于Vertx,节点或播放 谢谢

Node.js只使用数组中的最后一项

Hi fellow Javascript / Node.js-Developer, 我遇到了一个很好的老问题与asynchronousJavaScript给我只有最后一个数组的项目(见这里和这里 )。 不幸的是,所提供的解决scheme都不适合我。 我在节点版本0.10.25上运行。 我编译了一个最小的(不)工作的例子: var neededTables = [{ name: "ipfix_exporters", },{ name: "ipfix_messages", }]; var params = {}; console.log('[1] Connected to hana-database'); neededTables.forEach(function(table) { params.table = table; console.log("Checking table: " + params.table.name); checkForTable.bind(null, params)(); }); function checkForTable(thoseParams) { setTimeout( (function(myParams) { return function(err, rows) { if(err) { console.log(err); return; […]

节点返回从Q.async产生的值

有了这段代码: function * foo(ctx) { // process some things // yield some async stuff… return 'foo'; } Q.async(function * (ctx) { return yield foo(ctx); })(this).done(function(result) { console.log(result); }); 我期望的结果是foo() (即'foo' )的结果,但它是实际的发电机对象! 我在想什么,或者我在这里不明白? **解决scheme** 虽然答案是很好的解决办法,但我觉得我甚至可以通过简单的做法来缩短整个事情 result = Q.async(foo)(this);

nodejsasynchronous:多个相关的HTTP API调用

我正在开发一个项目,其中包括向不同的API发出多个HTTP GET请求,每个请求都需要最后的信息。 我试图避免嵌套callaback和反地狱,并试图让它与async模块的工作。 这是我需要做的:我有一个1..n课程标识符( ['2014/summer/iat/100/d100', '2014/spring/bisc/372/d100'] )。 对于数组中的每门课程,我需要通过HTTP GET获取其课程大纲。 产生的大纲看起来像这样: { "info": { "nodePath": "2014/spring/bisc/372/d100", "number": "372", "section": "D100", "title": "Special Topics in Biology", "term": "Spring 2014", "description": "Selected topics in areas not currently offered…", "name": "BISC 372 D100", "dept": "BISC", }, "instructor": [ { "lastName": "Smith", "commonName": "Frank", "phone": "1 555 555-1234", "email": "franksmith@school.edu", […]

制作循环同步节点js web-kit

我的应用程序node.js webkit旨在扫描每个代理一个file.txt,并说如果代理工作。 但我有一个问题,当我的启动,他不等待testing结束“http.get”在行9上。当我的第一行被testing我的变种是在file.txt的最后一行如何在继续循环之前等待testing线11的结束? var file = e.dataTransfer.files[i].path; content = fs.readFileSync(file, "UTF-8"); var lines = content.split("\n"); for (var n = 0; n < lines.length; n++) { var arr = lines[n].split(":"); http.get({host: arr[0], port: arr[1], path: "http://www.google.fr", agent: false}, function(res, req) { console.log(req); if(res.statusCode == 200){ el.className = ''; el.innerHTML = arr[0] + ':' + arr[1] + […]

SailsJS +水线并发数据库请求与承诺

我对SailsJS的吃水线并发性有些困惑。 目前我正在做这样的数据检索; var results = {}; // Get user by id 5 User.find('5', function(err, user) { results.user = user; // when it resolves, get messages Message.find({userId: '5'}, function(err, messages) { results.messages = messages; // when message query resolves, get other stuff OtherStuff.find({userId: '5'}, function(err, otherStuff) { results.otherStuff = otherStuff; res.view({results}); }); }); }); 问题是数据库调用不是并发的。 每一个请求都在先前的承诺完成之后启动。 […]

关于nodejscallback执行顺序问题的一个例子,我不明白

我写了一个示例代码如下。 //test.js var fs = require('fs'); fs.readdir(__dirname+'/app/img/', function(err, files) { console.log(files); }); someFunction(function(output){ console.log(output); }); console.log('This is the final console call'); function someFunction(callback) { callback(' I am some funciton. '); } 然后,运行'node test.js'后,得到如下结果。 $ node test2.js I am some funciton. This is the final console call [ 'photo1', 'photo2' ] someFunction()是我自己创build的,用于模拟fs.readdir()中的callback函数。 而作为我原来的假设,结果应该是 [ 'photo1', 'photo2' […]

等到for循环中的所有函数调用结束执行 – Javascript

我有一个函数,其中包含一个for循环内的另一个函数调用。 outerFunction(){ for (var j = 0; j < geoAddress.length; j++) { innerFunction(j); } } 我需要等到所有对innerFunction的调用完成。 如果我需要并行执行这些函数,那么如何在JavaScript中实现这一点?