Tag: callback

callback方法while循环javascript

我想在这样的while循环中使用callback函数: do { Methodwithcallback(..function () { //do something }); } while (); function()不会被调用,但它没有loop工作。 该方法需要一些时间来执行,我想在方法完成后重复loop 。 为什么方法在loop被忽略? 我正在使用Node.js

我怎样才能改善这个嵌套的asynchronous循环?

问题如下。 我有这样的对象数组: let myObj = [ {'db1':['doc1','doc2','doc3']}, {'db2':['doc4','doc5']}, {'db3':['doc7','doc8','doc9','doc10']} ] 请注意,这是我决定用于解决问题的数据结构,如果可以改进整体实施,则可以对其进行更改。 实际的数据库和文档ID是从格式如下的文本文件中读取的。 "db1","doc1" "db1","doc2" … 我的应用程序将同步遍历数据库列表。 在每个数据库迭代中,将会有一个文档列表的asynchronous迭代。 每个文件将被检索,处理并保存回数据库。 所以基本上在任何给定的实例:一个分贝,但多个文件。 我有一个像上面这样的工作实现: dbIterator :迭代dbs的同步外部循环。 传递给docIterator的callback将触发下一次迭代。 const dbIterator = function (x) { if (x < myObj.length) { let dbObj = myObj[x]; let dbId = Object.keys(dbObj)[0]; docIterator(dbId, dbObj[dbId], ()=>merchantIterator(x+1)); } else { logger.info('All dbs processed'); } }; docIterator :迭代文档的asynchronous循环。 […]

无法将值从服务返回到控制器以在node.js中进行呈现

我最近开始使用nodejs,因为我想转到一个新的项目(我通常是一个Java程序员)。 我正在做一个rest服务API。 到目前为止,我已经有一个路由模块,它定义了我的端点,然后调用一个控制器函数,它保留了我的对象,然后返回响应。 我想委托我的持久性逻辑到一个服务模块,以保持我的控制器。 对于我更复杂的情况来说,这是绝对必要的。 我正在努力寻找如何成功地重构我的代码来使用服务。 我到目前为止还没有成功地调用一个服务方法,从我的控制器返回一个值,然后渲染。 我将提供我正在工作的原始模块,然后尝试将逻辑拉出到返回值的服务模块中: 路线/ index.js const UserController = require('../controllers/userController'); const ProfileController = require('../controllers/profileController'); module.exports = (app) => { app.get('/api', (req, res) => res.status(200).send({ message: 'Welcome to the Todos API!', })); app.get('/api/users', UserController.list); app.post('/api/users', UserController.create); app.get('/api/users/1/profile', function() { console.log('got profile for user 1'); }); app.post('/api/users/1/profile', ProfileController.create); }; 车型/ user.js的 'use strict'; […]

在Netbeans / Eclipse中添加语言语法

这可能看起来像是一个奇怪/不寻常的请求,但我试图找出是否有可能。 我想在Netbeans或Eclipse中轻松添加语言语法,而不需要创build一个全新的语言。 根据这个问题如何为 Eclipse 添加更多的语法元素在Eclipse中是不可能的,但是在2008年被问到所以也许事情已经改变了。 我想这样做的原因是我在node.js中开发,它使用callback相当严重。 所以,如果我可以让“callback”和“callback()”这个词以不同的颜色突出显示,那么这个代码就可以很容易地看到。 谢谢你的帮助!

如果我可以在node-mysql的callback中做一个“require”,那么模块函数会被添加到callback作用域还是全局作用域?

我正在使用nodejs和node-mysql驱动程序。 我发现自己正在做重复的锅炉板,如 client.query(querystr,queryparams,函数callback(错误,结果,字段){ if (err){ do err related stuff } else { do success related stuff } } 在大多数情况下,一切都是直截了当的,重复的,除了在成功上发生的事情,这取决于查询和上下文的变化。 所以我想封装所有这一切在一个单一的function,并通过querystr,queryparams和成功function。 问题:我不能这样做,因为这是在callback中,我不能让查询引擎使用我的成功函数,即使我通过callbackparameter passing它。 所以我想我可以在callback中做一个“要求”,如果是的话,将“必需”模块的function添加到全局范围或callback范围? 我希望后者B.

Nodejscallback或eventEmitter

编写nodejs代码是最好的做法。 我目前的代码有太多的callback,并降低了可读性。 任何build议?

在node.jscallback中引用

当一个基本问题出现时,我刚刚写了一些testing。 我写了一个testing框架的基本框架。 它首先收集数组中的所有testing(它们的callback函数),然后在一个单独的循环中执行它们。 但是,这个 //test.js var testArray = [ { n : 1, d : 'text1' }, { n : 2, d : 'text2' } ]; var cbs = []; function fnWithCallback(d, cb) { console.log('d=('+d+')'); cbs.push(cb); } for(var i=0; i < testArray.length; i++) { var v = testArray[i]; fnWithCallback(vd, function() { console.log('v=('+v.n+'), i=('+i+')'); }); } […]

为什么node.js Express框架在设置会话variables时不使用callback?

我已经注意到,为了在会话中存储一个值,您只需调用req.session.key = value,而无需指定callback。 我使用connect-mysql模块将mysql设置为会话存储适配器。 所以我想知道每次我保存一个值的会话,它正在更新的分贝,不应该有一个callback与此相关? 然而,在我看来,人们正在愉快地同步使用它。 有人可以解释为什么这种情况? 谢谢。

我如何访问Mongoose / nodejs中的callback函数内的值?

我写了一个函数,它使用Mongoose从mongoDB中读取一个项目,并且我想把结果返回给调用者: ecommerceSchema.methods.GetItemBySku = function (req, res) { var InventoryItemModel = EntityCache.InventoryItem; var myItem; InventoryItemModel.findOne({'Sku' : req.query.sku}, function (err, item) { // the result is in item myItem = item; //return item doesn't work here!!!! }); //the value of "myItem" is undefined because nodejs's non-blocking feature return myItem; }; 但是,正如您所看到的,结果仅在“findOne”的callback函数中有效。 我只需要将“item”的值返回给调用者函数,而不是在callback函数中进行任何处理。 有没有办法做到这一点? 非常感谢你!

工作完成后的Kuecallback

我的主节点实例派生一个工作进程,它通过IPC接受消息(使用内置的Node process.send()和process.on('message'… ),这些对象包含有关要添加到Kue中的新作业的信息然后处理这些工作。 我的主要Node实例调用如下所示: worker.send({jobType:'filesystem', operation: 'delete', path: fileDir}); 和工人实例做这样的事情: jobs.create(message.jobType, message).save(); jobs.process('filesystem', function(job, done) { fs.delete(job.data.path, function(err) { done(err); }); }); 并且工作成功完成。 在作业完成后,如何在主节点实例中获得类似callback的function? 我怎样才能从工人实例返回一些结果到主节点实例?