Tag: asynchronous

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中实现这一点?

如何处理asynchronous函数和集合?

假设我们有一个函数foo(item, callback)和一个集合items 。 我想要做的就是用项目中的每一个items与执行foo返回的值来replace,就像Array.map()一样。 但问题来了: foo的结果是在callback中产生的,所以我没有在callback本身之外访问它(显然,我不能改变foo来满足我的需要)。 你可以尝试一个像 var results = []; items.map((function(el) { foo(el, function(result) {results.push(time)}); }); 但是当你的results收集“准备就绪”的时候你就无法知道了。 我完全无能为力 我该怎么办? 什么是模式? 编辑:我更感兴趣的香草JavaScript的方式来实现这个比工具/库,这是无论如何可以接受的答案。

NodeJS / Waterline,在响应之前需要等待多个创build结束

在我的nodejs应用程序(使用sailsjs)中,我使用控制器来接收以.zip格式上传的多个图像,然后使用水线将它们保存在数据库中: var images = []; zipEntries.forEach(function(zipEntry) { zip.extractEntryTo(zipEntry.entryName, p, false, true); Image.create({ filename: zipEntry.name, }).exec(function(err, image){ images.push(image); }); }); res.json(images); 问题是我需要发回所有生成的图像ID(自动递增),但创build方法是asynchronous的。 有什么办法可以等待所有的创build方法结束之前,我可以发送服务器响应? 编辑:所以我find了一个工作,通过检查我得到的图像的数量,并在.exec方法中增加索引,我可以检查这是否是最后一个可执行文件,然后发送响应。 var images = [], nbValidImage = 0, i = 0; zipEntries.forEach(function(zipEntry) { zip.extractEntryTo(zipEntry.entryName, p, false, true); nbValidImage++; Image.create({ filename: zipEntry.name, }).exec(function(err, image){ i++; images.push(image); if(i == nbValidImage) { res.json(images); } }); }); […]