Tag: asynchronous

nodejs中的jQuery.when()相当于什么?

我问jquery是什么时候在angular度 ,现在我想在节点做类似的事情。 我需要这样的东西: when(fs.readFile('file1'), fs.readFile('file2')) .done(function( a1, a2 ) { … // do stuff }); 我怎样才能做到这一点? 谢谢。

我的asynchronous包装meteor包的问题

我正在尝试编写我的第一个Meteor智能包,并且遇到了问题。 我正在尝试编写一个封装了以下node.js模块的包: https : //github.com/dmcquay/node-apac 我被告知这样做,我应该使用Meteor._wrapAsync封装OperationHelper.execute()方法,以避免在将来的项目中使用它时callback地狱。 我目前在我的包中有以下代码: apac = Npm.require("apac"); OperationHelper = apac.OperationHelper; function makeSyncMethod(method){ var wrapped=Meteor._wrapAsync(method); var syncMethod=function(){ return wrapped.apply(this,arguments); }; return syncMethod; } OperationHelper.prototype.executeSync = makeSyncMethod(OperationHelper.prototype.execute); 它似乎是按照它应该(我认为)的方式扩展原型,但是当我使用下面的代码来调用它时(我刚刚创build了Meteor项目的准系统,添加了我的包,就这些了): // Test of APAC stuff, maybe. Meteor.startup(function() { opHelper = new OperationHelper({ awsId: "<key>", awsSecret: "<key>", assocId: "<id>" }); var test = opHelper.executeSync('ItemLookup', { SearchIndex: 'Books', […]

asynchronoussocket.io JavaScriptcallback不工作

我需要帮助,使我的JavaScriptasynchronous,因为我从一个数据库与节点查询。 我正在使用node.js和socket.io。 如果我使用setTimeout()函数,代码将起作用,但是我想使代码更可靠,所以我试图实现callback。 但是,我不知道如何在callback函数中正确使用“socket.on()”。 我认为问题是我嵌套socket.on调用和第二个“socket.on()”调用不会执行。 任何帮助将不胜感激,谢谢。 /*server side*/ socket.emit(variable1);//not important socket.emit(variable2);//not important //code above isn't important, I just wanted to show how data is used from my queries /*client side*/ var socket = io.connect('123.456.789.123:3000'); var data = " ";//data I need to pass around socket1(data, function(){ socket2(data) }); function socket1(data, callback) { socket.on('variable1', function (data) […]

Node.js:从内部调用asynchronous调用的函数返回值

我正在尝试创build一个同步函数,它创build一个随机string,并检查在Amazon Web Service S3上是否已经有该名称的文件。 我如何才能使这个function同步,因为它是对AWS的asynchronousWeb服务调用? 如果文件名已经存在,函数应该再次调用自己(recursion)直到find可用的文件名。 var generateUniqueAWSKey = function(prefix) { var unique = generateRandomString(); // generates a random string var name = prefix + unique + '.png'; awss3.headObject({ Bucket: 'pics', Key: name }, function(error, result) { if (!error) { unique = generateUniqueAWSKey(prefix); } }); return unique; }; var filename = generateUniqueAWSKey('prefix_'); // more code […]

承诺的退货价值不是预期的

我有一些逻辑,我试图build立一个“人”对象,我有一个名为getProvider的方法,我基本上从mongo获取提供者并将其分配给person.provider 。 由于对mongo的调用是asynchronous的,我试图使用promise。 除了我的.then方法之外,在任何地方logging它的值似乎都是正确的。 它显示{"source": {}} ,我不知道为什么。 这是我的输出: data = MYPROVIDER provider = MYPROVIDER after addProvider {"source":{}} … configDone.promise.then(function () { return addProvider(); }).then(function() { console.log('after addProvider'); console.log(JSON.stringify(people[0].provider)); // SHOWS {"source": {}}. WHY IS IT DOING THIS? callback(null, people); }).fail(function (err) { callback(err); }); function addProvider() { var promises = []; people.forEach(function(person){ promises.push(person.provider = getProvider(person.id, […]

expression/节点,理解渲染模板和asynchronous模型

我有一些麻烦,理解我的应用程序应该如何正确运行加载JSON和渲染模板方面。 想象一下,有路线仪表板,我想从外部API收集一些数据。 我已经创build了自定义文件(tools.js),我有一个从源代码( https.request(options, function(res)) {…} )中获取数据的https.request(options, function(res)) {…} ,所以基本上这个过程如下所示: 我在浏览器中打开我的路线(tools.js开始从外部API中收集JSON) 模板呈现,并且tools.js调用的结果仍然是未定义的 tools.js刚刚结束加载,在控制台显示正确的数据,但模板已经呈现未定义的结果。 我希望这是有道理的。 我明白,这是一个预期的行为,但是如何在从tools.js获取数据之后“重新呈现”模板?

node.js如何决定一个语句是否被视为asynchronous?

我一直在试图理解什么node.js要添加到事件循环asynchronous处理,以及像正常的同步程序那样得到执行。 例如,为什么这个程序同步执行? console.log(longExecution()) console.log('hello'); function longExecution(){ var results = ''; for (var i=0; i < 10000000; i++) { if (i%1000 === 0) results += 'x' } return results; } 这是输出: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx […]

试图使asynchronous代码在for循环内同步运行

我有一个函数runSyncForLoop ,其中我希望2秒超时将停止连续30次调用linkArray作为linkArray循环。 我做了这个基于其他一些stackoverflow职位,我正在阅读,其中一个build议deasync和另一个build议sync 。 我认为我遇到的问题是ret被asynchronous设置,所以这并不能解决问题。 现在,有一个暂停,然后突然openEmailPage被解雇了30次,虽然我期待在每次火灾之间有openEmailPage延迟。 function runSyncForLoop(linkArray){ for (i in linkArray) { var ret = 0 ; setTimeout(function(){ openEmailPage(linkArray[i]) },2000); ret="hello"; } while(ret === 0) { require('deasync').runLoopOnce(); } return ret; } 如果没有deasync / timeout的话,这可能只是下面的内容: function runSyncForLoop(linkArray){ for (i in linkArray) { openEmailPage(linkArray[i]) } } 我试图弄清楚如何运行这个与openEmailPage(linkArray[i])每次调用之间的两秒钟延迟

JavaScriptasynchronouscallback地狱

我有一个应用程序,我使用asynchronous,以避免“意大利面callback”,并正常工作,但在某些平行调用,我不得不作出一些更改,因为值之前必须改变,因为这些变化做了同样的例程,我想做一个function,这样做,从而节省代码,但不工作的应用程序( 我是新来的JavaScript和我正在学习 )。 debugging(console.log),在某些情况下的错误是相同的callback,他从不同的请求调用(如果他们是本地variables不明白这是怎么回事)。 我试图用forEach和async.each来更改代码,但是在两种情况下我都有错误,不再是更多的改变继续尝试,找不到错误。 我原来的代码 (我总结了一下,以避免长篇大论): async.parallel({ today: function(callback){ data.get('DATA', function(err, dataGet){ if(err){ callback(err); } callback(null, dataGet); }); }, …. yesteday, week, month …. year: function(callback){ data.get('DATA', function(err, dataGet){ if(err){ callback(err); } callback(null, dataGet); }); } }, function(error, results){ — routine —- }); 而我的新代码是这样的: function function getDataChange(key, valuePass, callback){ var values = [ …. […]

“asynchronous杂耍” – 它真的要求我做什么?

我正在通过learnyounode项目学习learnyounode 我已经完成了前几个任务,他们都似乎相当简单。 然后,我进入了“asynchronous杂耍”之一,这个任务的描述在我需要做的事情上完全超越了我的头脑。 其要点是,我需要编写一个接受3个URL作为参数的Javascript,但是将正确的响应与正确的服务器相关联。 作业本身指出,你不能天真地认为事情将正确地与正确的URL相关联。 我提出的(不正确的)代码certificate限制是正确的: var http = require('http'); var bl = require('bl'); var httpCallback = function(response) { var pipeHandler = function (err, data) { if(err) return console.error(err); console.log(data.toString()); }; response.pipe(bl(pipeHandler)); }; var juggleAsyncConnections = function(connA, connB, connC) { http.get(connA, httpCallback); http.get(connB, httpCallback); http.get(connC, httpCallback); }; juggleAsyncConnections(process.argv[2], process.argv[3], process.argv[4]); 这个问题,也就是我的问题是,处理asynchronous连接处理的正确方法是什么,以及我需要理解正确的底层概念是什么? 注意:我见过其他问题,比如“OMG为什么我的解决scheme不工作?” 我不是在问,我特意着手看到“天真”的解决scheme失败了。 我不明白为什么它不起作用的基本原则,或什么原则实际上工作。 另外,我并不是要求某人“为我解决问题”。 […]