Tag: asynchronous

如何防止Twitterstream中的callback触发每个新的tweet?

我的应用程序通过Twitterstream筛选匹配的string。 当它find一个匹配时,它应该增加一个计数器并通过socket.io发送新的计数给客户端。 不幸的是,socket.io正在发送每一个tweet,而不是每一个匹配。 它比需要的时间更频繁地发射,导致浏览器问题。 我怎样才能防止Twitterstream中的每个新事件调用callback? 这是我的twitterstream的代码: // Compares watchList (NYT Keywords) to Twitter stream, counts every mention exports.keywordStream = function(callback) { exports.initializeFeed().then(function(watchList) { // enter the stream t.stream('statuses/filter', { track: watchKeywords }, function(stream) { // read twitter firehose ('data') for incoming tweets. stream.on('data', function(tweet) { var tweetText = tweet.text.toLowerCase(); // compare the text of each […]

简单的方法来通过nodejs中的asynchronous光标

我想写最后一个可能的代码来通过一个asynchronous光标。 我从以下(破碎的)代码开始: function something( done ){ stores.someStore.select( {}, { cursor: true }, function( err, cursor ){ var processItem = function( err, item ){ console.log("Item before check:", item ); if( item === null ) return; console.log("Item:", item ); cursor.next( processItem); }; cursor.next( processItem ); }); } 这显然是非常破碎的: 不检查错误 一旦光标完成,我就不能在goThroughCursor做任何事情 我想出了这个解决scheme,看起来太复杂了, 必须有更好的方法来做到这一点… function goThroughCursor( cursor, processItem, cb […]

如何在运行摩卡testing之前等待一个咕噜的任务完成

简而言之… 我有一些我想要testing的外部configuration的咕噜任务(确保他们做他们应该做的)。 所以我想写一个摩卡testing在before函数中运行任务,并声明一切顺利。 …和一些细节 在我的gruntfile有类似的东西 # Load task configs from `grunt` dir. configs = require('load-grunt-configs') grunt, config: src: ['tasks/*{.js,.json,.coffee,.cson}'] # Load all **grunt tasks** with patter `grunt-*` require('load-grunt-tasks') grunt, pattern: [ 'grunt-*' ] # Pass configs to grunt grunt.initConfig configs 并随后进行一些任务注册… 然而,我现在可以访问我的less任务驻留在我的tasks文件夹(使用grunt-contrib-less ) less.cson 。 到现在为止还挺好。 🙂 我使用chai来断言: describe('Checking static resources for dev', function () […]

使用setTimeout时node.js处理stream反压

对于我之前从这个问题中遇到的进一步问题,这是一个问题: nodejs:从文件读取并存储到数据库,限制最大并发数据库操作 问题: 我想稍后重新安排一些操作,但是这是打破了我处理背压的方法。 详情: 我有一个CSV文件,我正在阅读作为一个stream,并使用转换转换为JSON,然后asynchronous存储每一行​​数据库。 由于行被转换处理,它们被放置在负责发出数据库操作的asynchronous队列上。 例如 parser._transform = function(data, encoding, done) { var tick = this._parseRow(data); dbQueue.push(tick, function(err, result) { if (typeof(err) != 'undefined') { console.log(err) } }); this.push(tick); done(); } 当队列饱和/空时,通过暂停和恢复parsing器来处理背压: dbQueue.saturated = function() { parser.pause(); } dbQueue.empty = function() { parser.resume(); } 我一直试图做的改变是,当一个项目从队列中被取消时,将来有条件地重新调度一段时间(100ms): var dbQueue = async.queue(function(data, callback) { if (condition) […]

将承诺包装到同步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 =''; // […]

如何在knex中运行同步查询

如何在节点中的knex db中以同步方式导致结果。 http://knexjs.org/#Promises-then knex.select('*').from('users').where({name: 'Tim'}) .then(function(id) { console.log('Inserted Account ' + id); }) 我想要这样的东西 knex.select('*').from('users').where({name: 'Tim'}) .sync().then(function(id) { console.log('Inserted Account ' + id); }); // code should not continue to run until completing then function 要么 如何使asynchronous库运行多个并行任务并返回同步代码中的结果。 像下面或类似的东西 var results=async.sync().parallel([ task1,task2 ],function(err, res){ results=res; }); // anything like var results or sync() console.log(results);

我怎样才能重复使用摩卡testing,所以我不必重复自己?

我试图在摩卡书写一些testing,我将通过BrowserStack在几个浏览器中自动化。 而不是重复每个浏览器的test.it代码,我想保持我的代码DRY并包装几个test.it块在一个函数中,只是调用test.describe内的test.describe ,像这样(实际的testing细节是不重要的); function runTests(driver) { test.it('form works', function() { var result = testForm(driver, '#formId', 'test@test.com'); return 'Expected Result' === result; }); } test.describe('Tests for IE 9', function() { var driver; test.before(function() { var capabilities = { 'browser' : 'IE', 'browser_version' : '9.0' }; driver = setupDriver(capabilities); }); runTests(driver); test.after(function() { driver.quit(); }); }); test.describe('Tests […]

多个asynchronous请求

那么,这里im triyng在对象列表中进行一些validation,但函数validation调用三个asynchronous方法(它向数据库发出请求)。但是当我以平行方式调用时,应用程序会给出错误500。 _.each(titlesToSave, function(title, index) { titleValidator.validateAsync(title, function (err) { if (err) { invalidTitles.push({index: index, error: err}); } joinArray[index](); }); }); var validateAsync = function (title, next) { async.parallel([ function(callback){ checkCity(title.carrier.address, callback)}, function(callback){ checkCity(title.beneficiary.address, callback)}, function(callback){ checkCity(title.seller.address, callback)} ], function (err,results) { if(err){ console.log('ERROR: ' +err); next(err); }else{ console.log('Result: '+results); next(); } }); }; var […]

node.js + hapi.js在响应之前等待函数执行

我的代码响应来自外部站点的数据的请求 – 它从互联网中获取数据,与任何响应打包在一起。 我是一个JavaScript初学者,我不习惯asynchronous编程。 有人可以告诉我,如果我这样做是正确的: var Hapi = require('hapi'); var Handlebars = require('handlebars'); var ical = require('ical'); // Set up server here: // … // Get data from the web: var ical_url = 'url_here'; function fmt_events(data){ var eventData = {events:[]} // format data and push onto eventData.events return eventData; } // here is where I […]

Node.js这个光纤已经在运行

我有一个关于在Node.js中使用光纤的问题。 以下代码失败,并显示错误消息: 这光纤已经在运行 上train程序。 var f = Fiber(function() { var fiber = Fiber.current; utils.enseeds(seeds, function(err, response){ fiber.run(response) }) var myseeds = Fiber.yield() utils.train(train, test, myseeds, function(err, response){ fiber.run(response) }) var stats = Fiber.yield() }) f.run(); 出于某种原因,它不喜欢我的myseeds ,如果我改变我的myseeds在train上的东西,它的作品。 为什么会发生?