Articles of asynchronous

mongoose复杂(asynchronous)虚拟

我有两个mongoose模式如下: var playerSchema = new mongoose.Schema({ name: String, team_id: mongoose.Schema.Types.ObjectId }); Players = mongoose.model('Players', playerSchema); var teamSchema = new mongoose.Schema({ name: String }); Teams = mongoose.model('Teams', teamSchema); 当我查询队伍时,我也会得到虚拟生成的队伍 : Teams.find({}, function(err, teams) { JSON.stringify(teams); /* => [{ name: 'team-1', squad: [{ name: 'player-1' } , …] }, …] */ }); 但我不能 使用虚拟 ,因为我需要一个asynchronous调用: teamSchema.virtual('squad').get(function() { […]

如何继续在repl / bash w / Node.js Commander中接收asynchronousconsole.log消息?

我有一个Node.js CLI,我一直在使用Commander库来构build。 这是主执行文件的代码。 #!/usr/bin/env node var program = require('commander'); var scmStash = require('./lib/hdqc/scmStash'); var command = {}; program .version('0.0.1') .option('-P, –Projects', 'List Projects') .option('-R, –Repositories', 'List All Repositories on Server.') .parse(process.argv); function listProjects() { scmStash.getProjectListing(function (data) { for (var i = 0; i < data.size; i++) { var project = data.values[i]; console.log(' ' + i […]

在node.js中永远重复这一组操作

我正在使用node.js 我有这个function,它使用承诺在执行某些操作之间引入延迟。 function do_consecutive_action() { Promise.resolve() .then(() => do_X() ) .then(() => Delay(1000)) .then(() => do_Y()) .then(() => Delay(1000)) .then(() => do_X()) .then(() => Delay(1000)) .then(() => do_Y()) ; } 我想要做的就是让这一套行动永远重演。 这怎么能在node.js中完成? //make following actions repeat forever do_X() Delay(1000) do_Y() Delay(1000) 编辑:我开始赏金的答案,使用重复队列来解决问题。

从另一个lambdaasynchronous调用aws lambda

我需要从另一个lambdaasynchronous调用aws lambda。 我有一个同步调用的工作代码。 exports.handler = (event, context, callback) => { var aws = require('aws-sdk'); var lambda = new aws.Lambda({ region: 'myregion' //change to your region }); console.log("lambda invoke started"); lambda.invoke({ FunctionName: 'testLambda', Payload: JSON.stringify(event, null, 2) // pass params }, function (error, data) { if (error) { console.log("error"); callback(null, 'hello world'); } else { console.log("lambda […]

当使用node.js async forEachSeries时,是否有等价的语句来“继续”?

我正在使用node.jsasynchronous包,特别是forEachSeries,根据从数组中绘制的参数进行一系列http请求。 在每个请求的callback中,我有一些if / else语句来响应不同types的响应。 // This is the callback of a GET request inside of a forEachSeries function(error, response) { if (response.results) { // Do something with results } else if (!response.results) { // Would like to use a continue statement here, but // this is not inside of a loop } else { // […]

用async.waterfall减less了嵌套,但增加了混乱

我正在尝试通过使用async.waterfall来减lessasynchronous调用(node + socket.io)的嵌套,最后我不得不在瀑布后面添加参数,因为以后需要它们。 这个代码可能更好地解释: //原始版本: socket event: turn action socket.on('turn action', function(gameId, turnAction, clientFn) { socket.get('corp', function(err, corp) { gameProvider.processTurnAction(gameId, corp.id, turnAction, function(err, msg, game) { clientFn(msg, game); }); }); }); // async.js版本 async.waterfall([ function(callback) { socket.on('turn action', function(gameId, turnAction, clientFn) { callback(null, gameId, turnAction, clientFn); }); }, function(gameId, turnAction, clientFn, callback) { socket.get('corp', function(err, […]

node.js async.eachcallback,我怎么知道什么时候完成?

我正在试图围绕Node.js和一些asynchronous操作。 在下面的代码中,我获取一些RSS提要,并存储发现的文章,如果我以前没有存储它们。 代码工作并存储新的文章。 但是,我不知道如何改变这个,所以我知道什么时候所有的文章被parsing。 例如,每次async.eachLimit的callback都会在每次async.eachLimit限制时被调用(10条或5条)。 那么我怎么知道他们什么时候完成? var FeedParser = require('feedparser'); var request = require('request'); var mysql = require('mysql'); var async = require('async'); var connection = mysql.createConnection({ host : 'localhost', user : 'someuser', password : 'somepass', database : 'somedb' }); connection.connect(); connection.query('SELECT * FROM rssfeed', function(err, rows, fields) { if(err == null){ async.eachLimit(rows, 5, parseFeed, function(err) […]

Nodejs:将函数特定variables传递给Async.parallel()

我有一堆长时间运行的数据库查询,我需要完成之前,我在节点中呈现一个页面。 每个查询都需要一些自己的variables。 有没有简单的方法将variables传递给nodejs中的async.parallel()实用程序? async.parallel([ queryX(callback, A1, A2, A3), queryX(callback, B1, B2, B3), queryY(callback, C1, C2, C3), queryY(callback, D1, D2, D3), queryZ(callback, E1, E2, E3), queryZ(callback, F1, F2, F3), ], function(err, results) { /*Do Render Stuff with Results*/} );

node.js与asp.netasynchronous页面

仍然试图将node.js忽略… 如果我为每个I / O操作应用asp.netasynchronous模式,并configurationmaxWorkerThreads = 1,它是否(在概念上)类似于node.js? I / O操作(在任何一个框架中)是在自己的线程中进行,还是有一些操作系统function来获取通知/灯光线程? 这个 SO线程说node.js仍然在内部使用线程,所以它不是从asp.net那么大的区别。 有些答案是肯定的,但它是一个更好的编程模型等问题涉及哪些线程,轻量级I / O像我在#2问的?

meteor:我如何stream和parsing一个大文件的asynchronous节点function?

我正在使用作业收集包执行以下操作: 用一堆有关网页的元数据下载一个大文件 使用NPM event-stream包由正则expression式分割的文件元数据中创build一个stream 检查一个集合中的元数据是否匹配(我一直试图将每个网页的元数据stream到另一个函数来做到这一点) 该文件太大,无法缓冲,因此需要stream式传输。 这是一个小文件,其中包含几个元数据的例子,如果你想尝试这个。 作业job-collection包中的每个作业已经在一个asynchronous函数中: var request = Npm.require('request'); var zlib = Npm.require('zlib'); var EventStream = Meteor.npmRequire('event-stream'); function (job, callback) { //This download is much too long to block request({url: job.fileURL, encoding: null}, function (error, response, body) { if (error) console.error('Error downloading File'); if (response.statusCode !== 200) console.error(downloadResponse.statusCode, 'Status not 200'); var […]