Articles of async.js

有关node.js中的async.waterfall的问题

我很困惑如何使用async.waterfall方法来清理我的callback。 我有几个函数正在进行API调用,并通过callback从这些API调用返回结果。 我想把一个API调用的结果传给下一个。 我也希望将这些调用放在单独的函数中,而不是直接将它们粘贴到async.waterfall控制stream中(为了便于阅读)。 我不能完全弄清楚你是否可以调用一个具有callback的函数,并且在进入下一个函数之前等待callback函数。 另外,当API SDK需要callback时,是否将其命名为与async.waterfall中的callback名称相匹配(在本例中称为“callback”)? 我可能会混合很多东西在一起。 希望有人能帮我解开这个。 以下是我正在尝试做的部分代码片段… async.waterfall([ function(callback){ executeApiCallOne(); callback(null, res); }, function(resFromCallOne, callback){ executeApiCallTwo(resFromCallOne.id); callback(null, res); }], function (err, res) { if(err) { console.log('There was an error: ' + err); } else { console.log('All calls finished successfully: ' + res); } } ); //API call one var executeApiCallOne = function […]

node.js:蓝鸟替代async.whilst?

我想运行一个while循环,这取决于每次迭代更新的条件。 现在的挑战是每次迭代中的代码都是asynchronous的。 一种通过使用async.whilst()来实现这一点的方法。 不过,我正在试图寻找一个使用蓝鸟承诺的替代品。 有没有这样的替代品?

我如何dynamic使用for循环,将不同的参数推送到一个数组?

目前我正在尝试使用Node.JS并行运行具有不同参数的相同函数 为此,我使用Async.js,我正在努力尝试推/堆栈函数到一个数组。 问题是这些函数是用相同的参数执行的。 这是我的: var async = require("async"); var array = []; var x = [1,2,3,4]; // This portion of code works perfect and the arguments are passed perfectly // The results that i am getting are: [100, 200, 300, 400] array.push(function(callback){ callback(null,calculate(x[0]))}); array.push(function(callback){ callback(null,calculate(x[1]))}); array.push(function(callback){ callback(null,calculate(x[2]))}); array.push(function(callback){ callback(null,calculate(x[3]))}); // This portion of code does […]

我如何pipe理Node.jsasynchronousvariables作用域?

我有以下代码来填充我的testing数据库。 目标是将每个子文档之后的父文档保存到父文档中,以便对其进行引用。 function saveRecipe(ingredients, directions, recipe, done) { var ingredientSaveTasks = createSaveTasks(ingredients) var directionSaveTasks = createSaveTasks(directions) async.parallel([ (callback) => { async.series(ingredientSaveTasks, callback) }, (callback) => { async.series(directionSaveTasks, callback) } ], (err, results) => { recipe.ingredients = results[0] // The returned ids for each ingredient recipe.directions = results[1] // The returned ids for each direction recipe.save(done) […]

将parameter passing给async.js任务

我必须迭代给定的JSON对象,并为其中的每个对象创build一个任务。 给定的任务也需要来自这个JSON对象的信息,我想知道如何将这些信息传递给我的任务,以便它在执行时可用。 build立我的任务数组: var asyncScrapeTasks = []; var resources = JSON.parse(body); for(var i=0; i<resources.items.length; i++) { asyncScrapeTasks.push(function (callback) { console.log(resources.items[i].id); }); } 执行我的任务: async.parallelLimit(asyncScrapeTasks, 5, function() { callback(null, "Done"); }); 我的问题: 现在console.log(resources.items[i].id); 返回未定义,这对我来说是有道理的,因为索引i在执行函数的时候是不知道的,但是我不知道如何解决我的问题。

nodejs循环async.parallelcallback

我正在testing一个由async.parallel函数调用的callback函数:如果callback函数使用参数或者没有,那么执行stream程似乎是不同的。 var async = require("async"); function makeTestFunction(i) { return function(callback) { console.log('test Function: '+i); return callback(); }; } function test(callback) { var endFunctions = function(i) { console.log('ending: ' + i); return callback(); }; var testFunctions = []; for (var i=0; i < 3; i++) { console.log('loop: '+i); testFunctions.push(makeTestFunction(i)); } return async.parallel(testFunctions, endFunctions ); } test( […]

节点MySQL以最快的速度执行多个查询

哪个是最快速的方法获取到MYSQL的查询,然后返回到输出: console.log('查询完成',结果)“ 有没有更好的方法? 请解释你的答案! 谢谢! 方法1: var connection = mysql.createConnection({multipleStatements: true}); connection.query('SELECT ?; SELECT ?', [1, 2], function(err, results) { if (err) throw err; console.log('queries done', results); }); 方法2: const Db = mysql.createPool({ connectionLimit: 7, dateStrings: true, multipleStatements: true }); Db.getConnection(function(err, connection) { if(err) console.log(err); connection.query(` SELECT "1" AS "first"; SELECT "2" AS "second";`, function(err, […]

NodeJSasynchronous – 即使有一些失败,仍继续执行多个http请求

我试图做出多个HTTP请求并累积,使用以下代码在NodeJS中显示结果: const async = require('async'); const request = require('request'); function httpGet(url, callback) { const options = { url : url, json : true }; request(options, function(err, res, body) { console.log("invoked") callback(err, body); } ).on('error', function(err) { console.log(err) }); } const urls= [ "http://1.2.3.4:30500/status/health/summary", "http://5.6.7.8:30505/status/health/summary" ]; async.map(urls, httpGet, function (err, res){ if (err) console.log(err); else console.log(res); […]

如何使用expressjs和mongodb使用promises /callback?

我真的很担心承诺和asynchronousJavaScript工作。 我想在/ user上执行一个GET并查询mongo,以便第一个查询的结果以某种方式处理以形成第二个查询的查询,并且该查询的结果是第三个查询的查询。 基本上我想通过res.send(result)将最终的mongo结果的结果发送回客户端。 这样做的正确方法是什么,以便客户端获得第二个嵌套的mongo查询结果200 OK? app.get('/user', function (req, res, next) { var query = {"isRegistered": false } db.collection('users', function (err, collection) { collection.find(query).toArray(function (err, result) { if (err) { console.log(err) } else { if (result.length > 0) { // do some random processing var randomUser = result[Math.floor(Math.random() * result.length)] // do ANOTHER db query […]

如何连接各种mongoose结果到一个JSON数组显示在DataTable上?

我需要连接不同的mongoose查询结果到一个数组。 我有一个像branch_data一样的mongoose结果 [ { _id: 59a270e53abb8426805b97fb, client_name: 'Client 1', branch_name: 'Branch 1', router_serial: '111111111', data_card_serial: '11111111', sim_number: '11111111111', modem_serial: '11111111111', idu_serial: '1111111111', dispatch_date: '08/27/2017', status: 'installed', action: 'primary();', __v: 0, ir_report: '201708271241491111111111.xlsx', notes: '111111111111111111', ip_address: '1111111111111', installation_date: '08/01/2017' }, { _id: 59a274045f867701fc07792e, client_name: 'Client 2', branch_name: 'Branch 2', router_serial: '2222222222222', data_card_serial: '22222222', sim_number: '2222222222222', modem_serial: […]