Articles of asynchronous

在Node.jsdevise模式中释放zalgo为什么asynchronouspath一致?

在我正在阅读的伟大的书籍NodeJs design patterns我看到下面的例子: var fs = require('fs'); var cache = {}; function inconsistentRead(filename, callback) { if (cache[filename]) { //invoked synchronously callback(cache[filename]); } else { //asynchronous function fs.readFile(filename, 'utf8', function(err, data) { cache[filename] = data; callback(data); }); } } 然后: function createFileReader(filename) { var listeners = []; inconsistentRead(filename, function(value) { listeners.forEach(function(listener) { listener(value); }); }); return […]

了解Node.JS使用async.waterfall如何执行外部函数

我需要使用async.js模块执行asynchronous函数。 但是当我执行外部函数时,我遇到了一些问题。 代码通过。 但是当我更改全局variables为本地variables,我不能设置使用参数。 var async = require('async'); var ogs = require('open-graph-scraper'); // global variables var param1 = {url: 'http://www.google.com/'}; var param2 = {url: 'https://www.yahoo.com/'}; function function1(callback){ ogs(param1, function(error, data1) { callback(null, data1); }); } function function2(data1, callback){ ogs(param2, function(error, data2) { callback(null, data1, data2); }); } function function3(data1, data2, callback){ console.log(data1); console.log("—————"); console.log(data2); } […]

ExpressJS – 如何处理同时发生的请求? 请求似乎阻止彼此。

我有以下一段代码 var express = require('express'); var routes = require('./routes'); var http = require('http'); … app.get('/a',function(){ Card.findCards(function(err, result){ //Mongoose schema res.send(result); //Executes a query with 9000 records }) }); app.get('/b', function(req, res){ res.send("Hello World"); }); 我发现当我在localhost / a上获取时,大约需要2.3秒才能完成。 这并不奇怪,因为它从数据库中获取了相当多的数据。 不过,我发现如果我/ B正在加载时,B不会显示。 就好像呼叫/ a阻止对/ b的呼叫一样。 这是expression如何工作? 我总是假设个别路由是asynchronous的,因为他们采取callback,但似乎是明文一次只能处理一个请求。 直到res.end()被调用,没有其他请求得到处理。 我是否缺less我需要的configuration? 作为参考,这是我如何连接到mongoose mongoose.connect(dbConnectionString, {server:{poolSize:25}}); 这是我的http服务器初始化部分 http.globalAent.maxSockets = 20; // […]

调用node.js中的callback函数

我习惯于在Java中思考,我试图让我的头绕过node.js。 当程序出错时,我的程序需要logging信息,而且我发现我不得不在node.js程序中join很多样板代码,以便在Java中免费获得。 我的问题归结为: 有没有一种更简单/非模板化的方式来获取一系列callback中的类似堆栈的信息? 和/或 我是否无法正确掌握node.js,并试图强制asynchronousnode.js更像是同步Java? Java示例 这是一个尝试(并失败)连接到Mongo数据库的noddy Java程序:import java.net.UnknownHostException; import com.mongodb.Mongo; public class Test { public static void main(final String[] args) throws UnknownHostException { final Mongo mongo = a(); } private static Mongo a() throws UnknownHostException { return b(); } private static Mongo b() throws UnknownHostException { return c(); } private static Mongo c() […]

NodeJS 7:如何在Async Mongoose Promises中显示正确的堆栈跟踪

当我在与bluebird mongoose承诺错误。 我没有正确的行号,这使我很难find错误。 unknownFunction("A")#show me the correct line number in the trace async.timesSeries 100, (index, next) -> unknownFunction("B") #show me only the line number where I catch the error process.on 'uncaughtException', (err)-> console.log err.stack console.trace err throw err 问题:如何获得正确的行号而不是错误被捕获的行号? PS:我发现并尝试这个到目前为止: https : //github.com/groundwater/node-stackup但它给了我很多不相关的行号。 编辑: 这是我如何初步与蓝鸟mongoose: Promise = require("bluebird") Promise.config({ longStackTraces: true warnings: { wForgottenReturn: false […]

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 { // […]