Tag: callback

我如何获得嵌套在两个分配函数和forEach循环内的值?

我正在写一个NodeJS模块,从Dropbox复制一堆文件夹,并根据文件夹结构创build一个目录。 令我头疼的部分是我需要获取主目录中所有文件夹的名称,然后才能获得文件夹中所有文件的名称,然后再转到下一个函数。 这是我现在的过程: 使用dropboxClient.readdir()获取主目录中的文件夹列表 遍历文件夹并获取名称子文件夹(再次使用dropboxClient.readdir()) 迭代这些子文件夹并获取文件的名称。 如果文件是降价文件,请将该名称添加到列表中 返回子目录中所有降价文件的列表 和一些伪代码: function getListOfFiles() { var subfolders = []; var fileNames = []; dbClient.readdir('', function(error, folders) { folders.forEach(function(folder, index) { subfolders.push(folder); dbClient.readdir('/'+folder, function(error, subfolders) { subfolders.forEach(function(subfolder, index) { dbClient.readdir('/'+folder+'/'+subfolder, function(error, files) { files.forEach(function(file, index) { if (isMarkdownFile) { fileNames.push(file) } }); }); }); }); } }); return fileNames; […]

回拨成为closures吗?

function fn(args){ var a= 'something'; doSomething('dummy',function(){ }); } fn(); 在这段代码中,是匿名callback变成了closures还是只是在执行后退出? 如果它变成了一个闭包,我如何取回内存,因为它总是可以访问fn的激活对象。

节点:在recursion中遍历目录

我对Node很新颖…我需要敲打Node的asynchronous行为和callback结构。 在这里,我现在正在努力: // REQUIRE ——————————————————————– fs = require('fs'); path = require('path'); // FUNCTION readAllDirs ——————————————————- function readAllDirs(dir, result) { if (!result) { result = function() {}; }; fs.readdir(dir, function(err, list) { if(err) { return result(err) }; list.forEach(function(file) { var fullpath = path.resolve(dir, file); fs.stat(fullpath, function(err, stat) { if(err) { return result(err) }; if(stat && stat.isDirectory()) […]

来自child_process的node.js:console.log

在节点中,我使用child_process运行perl脚本,并且callback中的console.log似乎performance得很奇怪。 child = exec("perl " + validationScript, {cwd: myDir}, function(err, stdout, stderr) { console.log('stdout: ' + stdout); console.log('stderr: ' + stderr); return cb(err); }); stdout打印正确,但stderr打印语句不执行。 (如果我注释掉标准输出,则stderr被正确打印)。 那么一些缓冲的问题? 我怎样才能让他们打印正确? 我是新来的asynchronous编程,所以很抱歉,如果这个问题太基本。

在node.js中使用promise链接数据库查询

我试图使用spread方法来积累我已经读过的Q.js在这个线程中承诺的结果。 它在另一个代码块中工作,但不在下面的app.get例子中。 我想链接查询使用Sequelize和mongoose和传递所有返回的数据传播的方法。 这是我的尝试: var db = require('./db/managedb'); // Sequelize var mongo_models = require('./db/mongo_model')(mongoose); var WB = mongo_models.Webdata, Est = mongo_models.Estimate; app.get('/p/:tagId', function(req, res){ var filename = req.param("tagId"); var mysql = db.db.query('CALL procedure()').then(function(rows) { console.log(rows); }); // Sequelize var nosql = WB.find().exec(function(err,k){ console.log(k); }) // Mongoose var nosql2 = Est.find().exec(function(err,la){ console.log(la); }) // Mongoose Q.try(function(){ […]

我如何等待收益?

我有一个函数findOrCreateUser返回一个生成器。 但是我需要在函数done时调用一个callback函数。 我该怎么做呢? 我试着在发生器上调用next() ,但是结果正在等待。 passport.use(new FacebookStrategy({ clientID: fbConfig.appId, clientSecret: fbConfig.appSecret, callbackURL: 'http://localhost:' + (process.env.PORT || 3000) + '/auth/facebook/callback' }, function(token, tokenSecret, profile, done) { var user = yield userRepository.findOrCreateUser( profile.id, profile.name, 'pic'); return user; }) );

JavaScript在async.map期间删除项目

我使用async.map迭代数组并执行每个项目上的一些asynchronous函数。 在某些情况下,我需要从原始数组中删除项目,我想知道这是否可能,我试着用两个空参数调用callback, cb(null,null) 但是这不起作用。 我尝试了一下,但在这个特定的情况下找不到任何东西。 有没有办法实现这一点? 谢谢。 编辑:短代码片段 async.map(page['canvasData']['objects'], function (elem, cb) { if (elem['type'] == "picturebox") { //async opeartions cb(null, elem); } else cb(null, null); }

找回内部callback的另一个发现(…),如何逃离callback地狱?

(第一:对不起,我不太会说英文!) 我想在一个数组中返回3个发现的结果。 我的代码(下)运行良好,但我在callback地狱! _Schema .static('retrieveAll', function(cb) { query = {}; this.find(query, function(err, data) { if(err) { cb(err, null); return; } if(data) all = data; else all = []; _StoresModel.find(query).select('contact address').exec(function(err, data) { if(err) { cb(err, null); return; } if(data) { all = data.reduce(function(coll, item) { coll.push(item); return coll; }, all); } _CustomersModel.find(query).select('contact address').exec(function(err, data) { […]

我如何避免这种“最终callback”模式?

假设我有以下代码: var foo = function( arg, continuation, behavior ) { if ( arg > 1 ) { // Do some work with arg, for example send a paged API request. console.log("foo: " + arg–); continuation( arg, continuation, behavior ); } else { behavior( arg ); } }, bar = function( arg, continuation, behavior ) { […]

nodejs创build后台任务还是subprocess来执行callback函数

NodeJS是否创build后台任务或subprocess来执行callback函数? NodeJS如何执行下面的查询? MyModel.find({}, function (err, docs) { //Do some thing });