Tag: callback

Javascript运行“乱序”

我正在尝试做一个简单的用户注册,但无法正确检查创build重复的用户运行顺序,我打算: 路线: app.post('/user/new', user.create); user.create: exports.create = function(req, res) { var exists = DoesUserExist(req, res); console.log(exists); if (exists === true){ console.log("exists"); res.redirect('/user/new'); } else{ //good to create user since it does not exist yet CreateUser(req, res); console.log("does not"); res.redirect('/user/new'); } }; 帮手funcs: function DoesUserExist(req, res){ var post = req.body; mongo.connect("mongodb://localhost:27017/db", function(err, db){ if(err) { return […]

node.jsasynchronous函数的可读性

我明白,我们不应该在node.jsasynchronous函数中返回对象,并且asynchronous函数中的每个path都应该导致callback函数。 为了在一定程度上解决“厄运金字塔”问题,并为了更好的可读性,只要说“回报”就可以了。 在调用callback函数之后,我不必将剩余的代码放在else块中,并跳过缩进并获得更好的可读性。 代码一直工作得很好,但只是想知道是否有任何潜在的问题,我忽略。 (function(database) { var mongodb = require("mongodb"); database.ObjectID = mongodb.ObjectID; var mongoUrl = "mongodb://localhost:27017/mydb"; var dbconn = null; database.getDBConn = function(next){ if(dbconn){ next(null, dbconn); return; } //already connected: return dbconn mongodb.MongoClient.connect(mongoUrl,function(err, database){ if(err){ next(err, null); return; } //connection fail: return error dbconn = {db: database, movies: database.collection("movie") }; next(null, dbconn); //connection success: […]

Socket.IO – 如何离线处理Node.js

一切工作良好与不同的浏览器连接到相同的端口聊天了,但是当我用Ctrl + Cclosures我的节点服务器,我在我的浏览器中得到以下错误: GET http://my-url net::ERR_CONNECTION_REFUSED 我已经尝试了以下客户端callback: socket.on('reconnect_attempt' … socket.on('message' … 但是他们没有触发,所以我做了一个肮脏的黑客工作, 使用计时器每秒检查一次套接字,如果节点服务器发生故障,则重新进行一次redirect: setInterval(function(){ if (socket.disconnected) window.open("http://otherurl","_self"); }, 1000); 有没有更好的方法来检测节点服务器是否使用客户端js代码离线?

平整嵌套的callback

这是一个callback(稍微修改/简化为这个问题的目的)我已经写了处理一些对象数据。 function (err, data) { var rv; if (data && data.result instanceof Array) { rv = data.result.map(function (value) { if (value && value.track_contributions instanceof Array) { return value.track_contributions.map(function (innerValue) { if (innerValue && innerValue.track) { return innerValue.track.mid; } }); } }); // flatten nested arrays rv = [].concat.apply([], rv); } console.log(rv); }; 以下是我正在处理的对象: { "result": […]

socket.io(nodejs)发出的callback是否通过在callback完成期间阻塞服务器来影响服务器的性能?

假设A向B发送消息并等待回叫,然后A可能发送新消息,B也向A发送许多消息。 在callback发生之前的这段时间里,我的意思是其他消息交换。 在第一个callback完成之前它是否会创build竞争条件或阻止其他消息发送,或者是否强制执行callback的顺序,以便说明消息1,2,3,4,5的callback总是以与消息相同的顺序到达被派出? 援助将不胜感激。

Node.js如何知道callback的第一个参数是一个error handling程序?

我对Node.js很陌生,我试图围绕它的错误优先的callback风格。 我很好奇一个函数如何知道第一个参数是否用于处理错误,什么时候用于处理请求,什么不是,因为这些variables名是任意的。 这里有一些例子,首先有没有err的代码 fs.readFile('/foo.txt', function(err, data) { if (err) { console.log('Ahh! An Error!'); return; } console.log(data); }); 和 http.createServer(function(req, res) { … }); 我相信Express框架通过计算参数的数量来做到这一点,但是在这些情况下,只有两个参数。

如何通过callback后的服务传递内容到另一个服务控制器已被parsing?

我有一个使用callback函数将内容传递给控制器​​的服务: angular.module('piApp').service("dataRetrievalService", function () { function getContents(callback) { //Converter Class var fs = require("fs"); var Converter = require("csvtojson").Converter; var fileStream = fs.createReadStream("order.csv"); //new converter instance var converter = new Converter({ constructResult: true }); //end_parsed will be emitted once parsing finished converter.on("end_parsed", function (jsonObj) { console.log(jsonObj); //here is your result json object //getResult(jsonObj) callback(jsonObj); }); //read […]

如何在事件处理程序中进行asynchronous调用?

我试图写一个自定义的摩卡记者,与一个HTTP API的第三方集成。 我接受了自定义记者( https://github.com/mochajs/mocha/wiki/Third-party-reporters )的基本示例,并试图在启动事件处理程序中添加对API的调用。 然而,我的HTTP请求callback到第三方似乎从未触发。 示例代码如下所示。 我已经testing了请求代码在其他上下文中按预期工作,它似乎是在摩卡记者的事件处理程序内,没有任何反应。 注意 – 请原谅当前的黑客等待callback的结果,我只是想确保我没有退出之前,callback有机会开火,我会收拾起来,当我得到它的工作! var request = require('request'); module.exports = function (runner) { var passes = 0; var failures = 0; runner.on('start', function() { var callbackFired = false; request('http://www.testapi.com', function (error, response, body) { callbackFired = true; }); while(!callbackFired){ console.log('waiting…'); } }); runner.on('pass', function(test){ passes++; console.log('pass: %s', test.fullTitle()); […]

在继续之前等待callback函数完成

function main(cb) { getFirstData(function(ResultsForFirstQuery) { // Do something with ResultsForFirstQuery // Call getSecondData with param Id I get from ResultsForFirstQuery() getSecondData(function(ResultsForFirstQuery[0].Id)) { // Now here I need to do something with data data I get from getSeconData(), // But the program only calls this AFTER cb(result) in MAIN because of async? // How to make […]

未定义导出typeerror的node.jscallback

我很难从一个名为InfoHandler.js的单独文件中获取这个函数返回的值,这个文件包含在我的第二个文件中。 module.exports = { getInfo : function (val, callback) { jsonRPC.getInfo(function(json){ Data1 = json.result[2]; Data2 = json.result[0]; Data3 = val; json = JSON.stringify(json); console.log(json); callback(json) }); }, 我想要这样使用它: require("InfoHandler.js"); var Info = InfoHandler.getInfo('50'); 信息现在应该包含从getInfo函数通过callback准备的jsonstring。 不幸的是我得到: TypeError: undefined is not a function 为callback。 这很可能是一个asynchronousIO问题,有人可以给我一个提示吗?