Tag: callback

如何为函数callback添加额外的参数

我正在写一个应用程序中使用一些callback。 我正在使用mongoose模型,需要保存一些不同的地方。 save函数接受一个callback函数,callback函数获取参数的error和model ,但是我想发送callback函数需要的一个额外的参数。 我不确定能够做到这一点的正确语法。 下面是我要去的一些示例代码… var saveCallBack = function(err, model, email_address){ if(err) { //handle error } else { //use the third parameter, email_address, to do something useful } }; 下面, token是mongoose模型。 正如我所说,保存需要callback,并通过错误和模型,但我也想发送我的callback一个variablesemail_address,我弄清楚在其他点。 appendParameter函数显然是伪代码,但这是我需要的functiontypes。 token.save(saveCallBack.appendParameter(email_address));

如何处理Node.js中的callback?

假设我有3个文件。 index.js像这样调用后端 $.post('/test/', data, function(response) { //handle success here }) routes.js像这样处理路由 app.post('/test/', function(req, res){ item.getItems(function(response){ res.json(response); }); }); items.js是访问数据库并为每个项目发出POST请求的模型 function getItems(callback) { database.query('SELECT * from items', function(result){ result.forEach(function(item){ request.post('/api/', item, function(req, res) { //finished posting item }); }); }); //callback here doesnt wait for calls to finish } 何时/何时应该调用传递给getItems()来处理index.js中的成功/失败的callback?

Strava-V3和Javascript es6发生器=不兼容?

我使用node-strava-v3和Node 5.7从Strava的API中检索JSON集合。 其实很简单,实际上没有问题。 我只想借此机会尝试ES6发电机。 到目前为止,我认为我很了解这个概念。 但是在这个Node-Strava-V3 API封装的情况下,这些方法永远不会直接返回值或承诺。 只允许回叫。 这引出了我的问题:我怎样才能把ES6发电机的概念发挥出来? 拿这个:(这需要access_token你可以要求在Strava门户) var strava = require('strava-v3'); var mainActivity = {id: 504641206}; strava.activities.get(mainActivity, function (err, data){ if(err){ console.log("Strava GET issue: ", err); /// consume the JSON data here… }; //rest of the code 但我可以使用生成器暂停,直到这个“strava.activities.get()”方法结束? 这种方法不返回任何,没有价值,没有承诺。 感谢您的所有build议 缩略词

Node.js + Express – 在完成之前返回未定义的callback

所以我在这方面遇到了很多麻烦 – 一直困住它好几个星期。 我的第一个函数查询MySQL数据库并返回一个响应,然后在我的第二个函数中处理。 问题是,JS是单线程的,我不知道如何让它以我想要的顺序运行: 函数1被触发。 该函数获取数据库响应,然后进行处理。 应答交给function2,然后进行更多的处理。 但是目前,程序直接跳转到第二个函数,而不允许查询时间,函数最终返回'undefined'。 var test = functionOne (functionTwo); console.log(test); //returning 'undefined' function functionOne(callback) { //QUERY TAKES A LONG TIME client.query("[QUERY]", function(err, result) { callback(null, result); }); } function functionTwo(err, result) { //More processing – slightly slow return result; } 编辑: 这是完整的文件。 var client = require('./dbHelper'); var convert = require('./genGIF'); […]

Nodejs使用callback函数循环

我是新的nodejscallback函数。 我必须在给出的两个价格范围之间find电话列表,如果在获得的列表中没有15个电话,我必须改变价格范围直到我有15个电话。 其实我从另一个文件编写了从数据库search手机的function,从那个文件我发送callback函数调用。 callback之后,如果数组大小小于15,则必须检查数组大小,然后更改价格范围,并调用相同的函数,如recursion或循环。 我无法处理callback函数。 请帮我写出正确的代码。 while(true ){ console.log("around came") Search.findBestMobile(context.end_price , context.start_price , function(data){ console.log("Best Mobile"); size = data.hits.hits.length; if(size >= 15){ context.phone_list = makeStringFromArray(data.hits.hits); cb(context); break; }else{ context.start_price += 1000; context.end_price += 1000; } }); } 但是在上面的代码中,break是不可达的语句。 我无法处理它。 请帮帮我。

承诺改变for循环的全局variables

我正在尝试做一些JavaScript代码的不同风格的基准testing,这里是我有: var Promise = require('bluebird'); var timer = function(name) { var start = new Date(); return { stop: function() { var end = new Date(); var time = end.getTime() – start.getTime(); console.log('Function:', name, 'finished in', time, 'ms'); } }; }; function regular (a, cb) { if (a % 2 === 0) return cb(null, a); return […]

nodejs同步调用:获取数据库callback,并将其parsing到前端

在我的NodeJS后端我有一个函数,我从sqlite数据库中获得一个值,我想把它发送到前端,但它总是说Object { msg: false }我想我需要一个函数,我可以做一个同步调用function。 我的代码: router.get('/', function(req, res, err){ var msg = " "; var uid = req.session.user; function printMsg(message){ msg = message; } db.getMsg(uid, printMsg); if(err){ res.send({msg : "No message available"}); } else{ res.send({msg: msg}) } }); 谁能帮我? 提前致谢。

如何在Node.js中同步使用请求?

这是我的基本脚本来刮一个给定的url,并获得其中的所有链接。 我想在请求函数完成后打印links_arr 。 但是,在这里请求callback函数被执行,所以,我得到一个空的数组打印。 我如何做到这一点同步? 即按以下顺序。 请求URL。 Cheerio获取所有链接。 我们遍历所有项目,并将它们插入到links_arr数组中。 打印数组。 PS我知道Node.js意味着asynchronous任务,但这是我需要履行的要求。 我看过Promise这样的东西可以帮助我,但是由于Node没有先进的知识,我不知道如何实现。 一些帮助将不胜感激。 我正在使用http请求的请求库,URLparsingurl和Cheerio的HTMLparsing。 var request = require('request'); var cheerio = require('cheerio'); var url = require('url'); var all_links = []; var processing = []; var processed = []; var base_url = "https://www.npmjs.com"; var base_host = "www.npmjs.com"; var analyze_href_sync = function(u){ console.log("Analysing URL "+u); url_obj = […]

获取callback结果(Nodejs)

我的快速和sql查询代码有问题。 我不能得到下面的SQL查询的results的值,但是这在loggingresults 。 我已经在这里返回results了。 这是我的sql.js代码 var dataContext = require('node2sql')({ username: 'user', password: 'password', server: '1xx.xx2.xx.xx9', options: { database: 'grades' } }); module.exports = { DataQuery: function(query) { query = query.replace(/\s+/g, '').split("/"); year = query[2].substr(2, 4); id = query[0]; period = query[1].toUpperCase(); if (period == 'SEM1') { period = "1st Semester"; } else if (period == […]

NodeJSasynchronouscallback不完成&呈现把手模板

我有一个Express GET请求,从Mongoose查询中提取数据,并且为每个返回的doc ,外部函数对作为x传递的每个doc执行计算,并返回结果,以便使用Handlebars将其呈现在前端。 理想情况下,我想进行calcA, calcB, calcC, calcD计算calcA, calcB, calcC, calcD然后在每个文档完成后,渲染test-env.hbs模板。 目前,当我打电话时,页面没有呈现,在日志中,一段时间之后,它显示GET /test-env – – ms – – ,可能是因为callback卡住了某处。 快速GET请求 var updates = require('./updates.js'); app.get('/test-env', function(req, res, next){ Market.find({"marketname" : 'To Win'}) .then(function(doc){ async.forEach(doc, function(x, callback){ updates.calcA(x); updates.calcB(x); updates.calcC(x); updates.calcD(x); }, function(err){ if(err) return console.log(err); res.render('test-env', {title: 'Test Page', items: doc}); }); }); }); 典型的calc函数 我想将returnA和returnB添加到docs数据中,以便在Handlebars中的{{#each}}expression式中呈现它 […]