Tag: callback

JavaScriptasynchronouscallback地狱

我有一个应用程序,我使用asynchronous,以避免“意大利面callback”,并正常工作,但在某些平行调用,我不得不作出一些更改,因为值之前必须改变,因为这些变化做了同样的例程,我想做一个function,这样做,从而节省代码,但不工作的应用程序( 我是新来的JavaScript和我正在学习 )。 debugging(console.log),在某些情况下的错误是相同的callback,他从不同的请求调用(如果他们是本地variables不明白这是怎么回事)。 我试图用forEach和async.each来更改代码,但是在两种情况下我都有错误,不再是更多的改变继续尝试,找不到错误。 我原来的代码 (我总结了一下,以避免长篇大论): async.parallel({ today: function(callback){ data.get('DATA', function(err, dataGet){ if(err){ callback(err); } callback(null, dataGet); }); }, …. yesteday, week, month …. year: function(callback){ data.get('DATA', function(err, dataGet){ if(err){ callback(err); } callback(null, dataGet); }); } }, function(error, results){ — routine —- }); 而我的新代码是这样的: function function getDataChange(key, valuePass, callback){ var values = [ …. […]

Node.js响应asynchronous数据

最近我开始学习一些关于Node.js和它的function,并尝试将它用于一些Web服务。 我想创build一个Web服务,它将作为Web请求的代理。 我希望我的服务以这种方式工作: 用户将访问我的服务 – > http://myproxyservice.com/api/getuserinfo/tom 我的服务将执行请求 – > http://targetsite.com/user?name=tom 响应的数据会反映给用户。 为了实现它,我使用了下面的代码: app.js: var express = require('express'); var bodyParser = require('body-parser'); var app = express(); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); var proxy = require('./proxy_query.js') function makeProxyApiRequest(name) { return proxy.getUserData(name, parseProxyApiRequest); } function parseProxyApiRequest(data) { returned_data = JSON.parse(data); if (returned_data.error) { console.log('An eror has occoured. […]

Javascript / Coffeescript使用哈希函数作为参数

我有一些看起来像这样的Coffeescript(提前表示歉意): doc = new ChargerServerDoc(Chargers.find({id:site.id}), site) doc.set_defaults().merge().needs_update update: (id, doc) -> Chargers.update id, $set: doc, (error, result) -> if error run_stats.error_count += 1 "error" else run_stats.update_count += 1 "update" return insert: (doc) -> Chargers.insert doc, (error, result) -> if error run_stats.error_count += 1 "error" else run_stats.insert_count += 1 "insert" return 它应该创build一些文档,并实现插入或更新到数据库作为callback。 needs_update: (callbacks = null) […]

node.js – post响应不等待callback完成

我正在研究node.js http服务器。 服务器连接到mongodb。 我正在向服务器请求一个post请求,以从mongodb获取文档。 但是post响应不等待mongodbcallback完成。 因此,我没有得到需要的输出在客户端。 如何处理这个? http.createServer(function(request, response) { if(request.method == "POST") { var body = ''; request.on('data', function(chunk) { console.log(chunk.toString()); body += chunk; }); request.on('end', function() { MongoClient.connect("mongodb://localhost:27017/exampleDb", function(err, db) { if(err) { console.log("We are not connected"); } else { var sysInfo = db.collection('sysInfo'); var jsonObj = sysInfo.find().toArray(); response.writeHead(200, {'Content-Type': 'text/plain'}); response.end(jsonObj); } […]

有没有办法克服的callback,如果(err)在Node.js样板?

随着项目的发展,我们开始有了这个非常感激,防御性的代码片段几乎无处不在: func(err, result){ if(err){ console.log('An error occurred!, @myModule :' + err); return callback(err); } //then the rest.. } 快速谷歌search揭示了一些试图克服这个共同关注的库,例如https://www.npmjs.com/package/callback-wrappers 。 但是,在不影响早期的error handling机制的情况下,最小化样板代码的最佳方法是什么?

当收到Error对象时,如何停止函数?

如何在发生错误时停止function。 我正在做一个http后的通话。 我已经构造了一个错误优先风格的callback函数。 如果传入一个Error对象,如何停止callback函数? 在我的使用情况下,我需要停止,无论错误types,因为我需要的数据对象的后续链callback函数。 它是否简单地return ? 我已经阅读了更高层次上的回报,希望得到确认,如果我的代码是正确的,我想实现。 我只是想确保继续callback函数不会继续,因为他们不会传递任何数据对象,因此,都将是'错误' server.js var request = function(callback) { // HTTP call to server }, function (error, response, body) { if (!error && response.statusCode === 200) { // processed and created data object return callback(null, data) } else { console.log(error.stack) return callback(error) ; } }) }; var requestSync = […]

等待解决多个callback

我试图从mongoose一次调用中获取ID。 之后,这些ID中的每一个都用来进行另一个返回多个对象的调用。 我正在尝试获取所有这些对象。 我目前的尝试看起来像这样: var members; var memberTimes = []; // Use the Group model to find a specific group Group.find({ members: { $elemMatch: { $eq: req.user._id } }, _id: req.params.group_id }, function(err, group) { if (err) { res.send(err); } else if (!group) { //res.send(new Error("User not in group or it does not exist")); } […]

有关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 […]

当保存时,Mongoosecallback从未达到

出于某种原因,尝试使用Mongoose将数据保存到MongoDB数据库时,从不会调用callback函数。 首先,我认为没有错误代码被触发,但是我testing了callback函数是否被input,而不是! 并没有保存在数据库中。 我甚至无法在其他MongoDB数据库存储的文件夹中看到一个名为client-db的文件(通过命令行) – 这可能是问题吗? 我已经尝试了类似问题的不同解决scheme,但目前为止还没有任何工作。 有没有人有任何想法我做错了? 我appeciate任何帮助! 以下是我的代码的相关部分: 客户db.js: var mongoose = require('mongoose'); var db = mongoose.connect('mongodb://localhost/client-db', function(){ console.log("Client DB: connected"); // This is shown }); module.exports = mongoose; //module.exports = db; // Another problem was solved by this, but didn't work for me 情节data.js: var db = require('client-db'); var plotDataSchema = db.Schema({ […]

NodeJS的MongoDBcallback地狱

我仍然有条件和数据库callback的麻烦,我写了一个路由function,查询违规对象,这是从客户端填写表格。 我试图改变拥有这个违规作为一个选项的用户,我查询该用户,并返回罚款,但在if语句,x!= y将永远返回true,因为我写这个的本质。 我希望它完成查询,然后打条件。 我觉得如何去解决这个问题一直存在。 if(viol.user != user[0]._id) 这样,当我编辑拥有该违规或对象的用户时,用户不会一次又一次地将相同的对象添加到自身。 app.post('/singleViolation/:violation', isAdmin, function(req, res) { var violation = req.params.violation; Violation.findById(violation, function(err, viol){ if (err) throw err; if (req.body.cause === '') { req.body.cause = viol.cause; } if (req.body.date === '') { req.body.date = viol.date; } if (req.body.location === '') { req.body.location = viol.location; } if(req.body.email === '') […]