Tag: asynchronous

如果async.forEach()会继续执行,那么会在数组中添加新元素吗?

我的问题是: 如果我导入asynchronous模块,创build一个数组,为该数组写一个async.forEach()循环,并且在循环运行时,我将更多元素放在该数组中循环,它会处理这些新添加的元素吗?

在$ http调用中使用then / catch

我的节点后端有以下端点: usersRoute.get('/get', function(req, res) { //If no date was passed in – just use todays date var date = req.query.date || dateFormat(new Date(), 'yyyy-mm-dd'), search = req.query.search; users.getAllUsers(date, search) .then(function(results) { res.json(results); }, function(err) { res.status(500).json({ success: false, message: 'Server error.', data: [] }); }); }); 我已经改变了我的SQL表名到别的东西来触发function(err){}部分 当我在我的服务中使用它时,看起来像这样: function getUsers(date, search) { return $http.get('/api/users/get', { […]

NodeJS – 发送多个请求并在一个callback中处理所有的响应

我试图find一种方法来发送多个请求(使用Express),并在一个函数中处理所有的响应。 这是我的代码: // In router.js app.get('/api/FIRST_PATH', CALLBACK_FUNCTION_A ); // In CALLBACK_FUNCTION_A file : module.exports = function (req, response) { CALLBACK_FUNCTION_TO_SERVICE_A(); CALLBACK_FUNCTION_TO_SERVICE_B(); CALLBACK_FUNCTION_TO_SERVICE_C(); } 我的问题是发送请求CALLBACK_FUNCTION_TO_SERVICE_A,CALLBACK_FUNCTION_TO_SERVICE_B和CALLBACK_FUNCTION_TO_SERVICE_C,然后检索另一个函数中的所有结果来处理它们。 任何帮助将不胜感激。

当函数返回一个promise时,是否有任何好处?

当你有一个不等待任何事情的函数,并返回一个承诺,你可以做到这一点。 这将返回一个你可以await的承诺。 function doSomethingAamzing ({id, animalType, accessToken}) { const url = `${url}/v1/${animalType}/${id}?access_token=${accessToken}` return request.get(url) } 这不是必要的,但我们可以做到这一点。 async function doSomethingAamzing ({id, animalType, accessToken}) { const url = `${url}/v1/${animalType}/${id}?access_token=${accessToken}` return await request.get(url) } 在后者更容易阅读为开发者,该函数是asynchronous的,并将返回一个承诺,这是不是很清楚的第一个function。 我认为使用后者更好的唯一原因是代码经历了一些可以从显式async语法中受益的静态代码分析。 当函数返回一个promise时,是否有任何好处?

为什么反应堆模式(Twisted,Gevent,Node.js等)

从阅读这篇文章, http://www.artima.com/articles/io_design_patternsP.html 我明白,反应器模式是完全asynchronous的,而反应堆模式不是。 我所知道的所有stream行的asynchronous事件驱动networking框架(Twisted,Gevent,Tornado,Asyncio和Node.js)都适用于反应器devise模式。 这是为什么? 前摄器模式不能提供更好的性能吗?

Express与asynchronous的Node.js API:遇到多个请求时出错

我是node.js的新手,尝试创build一个小的API。 我正在使用Express进行路由,并使用async.jc来逐步处理呼叫。 当只有一个请求进来时,这工作正常,但是当我尝试从我的机​​器发起2个或更多请求时,这个进程正在混合variables和崩溃中的值。 这里是我的来源简短的片段: router.get('/new', function (request, res) { async.waterfall([ function(callback) { // get a unique domain client.spop('domainSet', function(err, domain) { userdata = { email: 'user' + '@' + domain + '.' + mydomain, password: randomstring.generate(10), username: domain, name: domain, confirm: "false" } if (err) return next(err); callback(null, userdata, userdata.password); }) }, function(userdata, userpwd, callback) […]

如何通过neo4j REST API正确地创build数千个cypher节点?

我需要在cypher <3.0.0中通过node.js创build很多节点(比如50.000)。 我正在使用async.times发布所有密码查询。 不过看起来REST API正在崩溃(并死亡),因为可能有太多的请求通过。 我想继续使用节点,而不是使用LOAD CSV。 我的代码如下: var createStyles = function (data, cb) { var distinctData = …; console.log("creating styles"); … var create = function (id, callback) { console.log("creating st " + id); var req = … styles.addOrUpdate(req, null, function (err, node) { callback(null, node); }); } // call the same function multiple times […]

由于Nodejs的asynchronous性质而获得空数组

刚开始使用Nodejs,并在下面的代码中将数组作为响应时,面临这个问题。 我知道这是由于Nodejs的asynchronous性质,试图应用asynchronous,但没有得到所需的结果。 有人可以让我知道这个代码的修复: array = []; var company = companySchema.Company; company.findOne({_id: companySchema.objectId(req.tempStore.companyId)}, function (err, comp) { if (err) { console.log(err); } else { var i; var length = comp.events.length; var dataset = datasetSchema.dataset; for (i = 0; i < length; i++) { dataset.find({companyId:comp.events[i]}, function (err,data) { if (err) { console.log(err); } else { array.push(data); } […]

Node.js模块从MongoDB数据库中获取数据

我想使用一个模块来获取和处理来自我的MongoDB数据库的数据。 (它应该生成一个代表我的Express.js网站的导航栏的对象) 我想到做这样的事情: var nav = { Home: "/" }; module.exports = function() { MongoClient.connect(process.env.MONGO_URL, function(err, db) { assert.equal(err, null); fetchData(db, function(articles, categories) { combine(articles, categories, function(sitemap) { // I got the data. What now? console.log("NAV: ", nav); }) }); }); }; var fetchData = function(db, callback) { db.collection('articles').find({}).toArray(function(err, result) { assert.equal(err); articles = result; […]

Express / MongoDB – 数据库操作期间的意外行为

我有一个用户列表,我试图存储/更新到我的mongoDB数据库。 但是只有我列表中的最后一个元素被考虑在内,其他用户则不能进入thenfunction。 我是Nodejs的新手,这似乎是由于我不明白的同步行为。 var User = require('../to/path/user-service'); …. userList.forEach(function(user) { try { User.updateUser(user); } catch(err) { return console.error(err); } }); 用户服务 … var User = mongoose.model('User', userSchema); console.log(user.name); export.updateUser = function (user) { Issue.findOne({name: user.name}) .then((user) => { if(user) console.log(user.name + ' has been updated'); else console.log(user.name + ' has been created'); }).catch((err) => console.error(err)); […]