Tag: recursion

等待function在JavaScript中完成

下面的代码是怎么产生的,每次都会产生一个不同的输出(不是因为这个随机函数),但是它给了一些未定义的值,有时甚至是其他值。 问题是什么? function getRandom(ubound) { return Math.floor((Math.random()*10) % ubound); } function getInterval() { var interval = [getRandom(10), getRandom(10)]; if(interval[1] >= interval[0]) return interval; else getInterval(); } function generateIntervals() { for(var i = 0; i < n; i++) intervals[i] = getInterval(); } function printIntervals() { for(var i = 0; i < n; i++) console.log("Node " + […]

使用process.nextTick或setImmediate – node.js创build一个等待函数

我编写了一些Node.js,我想,来自Java背景,我应该弄清楚如何创build我自己的“等待”function。 显然,它会有所不同,因为Java被devise成multithreading而Node不是。 无论如何,我想在Node中所需的function是我想自己创build一个阻塞函数 – 如果程序中的一些布尔值没有设置,我可能要调用process.nextTick()直到布尔值被设置。 所以这将是: var bool = false; function foo(){ var b = baz(); } function baz(){ while(!bool){ process.nextTick(function() { return baz(arguments); }); } return {}; } function setBool(number) { setTimeout(function () { bool = false; }, number); } process.nextTick(wait); setBool(3000); 所以这个问题是双重的: (1)这是在Node.js中实现等待typesfunction的最好方法吗? (2)如果我调用baz(参数)而不是baz函数(recursion)在执行方面会发生什么? 一般来说,当你想从函数X得到返回值,但函数X在返回之前自己调用几次,这是否会造成任何问题? 这不是什么大不了的事情,而且事实certificate它是相同的回报价值? 我曾经想过这个,但从来没有真正担心或调查过。

如果我在nodejs中的私有方法中调用module.exports.public_method,是否有副作用?

我想知道这是否是在Node.js中执行recursionsetTimeout的正确方法? module.exports = { connect: function(callback) { amqp.connect(config.queue.url, function(err, connection) { if (err) { console.error("[AMQP]", err.message); return setTimeout(module.exports.connect, 1000); // keep reconnecting } }); } } 我试图在Node.js中实现重新连接机制。 但我不确定这一行是否会在JavaScript中产生副作用? return setTimeout(module.exports.connect, 1000);

如何用callback调用recursion函数?

当使用callback函数recursioncallback函数时,它会抛出一个错误, 错误:callback已被调用。 在/home/clsah/projects/LMS/node_modules/async/dist/async.js:837:32 …. 这是我的代码: function getEventList(oauth2Client, user, callback) { var calendar = google.calendar('v3'); calendar.events.list({ auth: oauth2Client, calendarId: 'primary', timeMin: (new Date()).toISOString(), maxResults: 50, singleEvents: true, orderBy: 'startTime' }, function(err, response) { if (err) { generateNewToken(oauth2Client, function(err, oauth2Client) { if (err) return callback(err) getEventList(oauth2Client, user, callback); //here is problem }) } else { var events […]

将数据附加到文件asynchronous

我使用这个asynchronousrecursion函数遍历一个目录的文件和文件夹,当find.css文件时,我将数据追加到名为“common.css”的文件中。 var walk = function(dir, done) { var results = []; fs.readdir(dir, function(err, list) { if (err) return done(err); var pending = list.length; if (!pending) return done(null); list.forEach(function(file) { file = dir + '/' + file; fs.stat(file, function(err, stat) { if (stat && stat.isDirectory()) { minimizer(file, function(err, res) { results = results.concat(res); if (!–pending) done(null); […]

从asynchronousrecursion函数中返回一个值

我在Node.js中有一个复杂的recursion函数,为了这个问题,我简化了以下内容: function sum(tree) { if (!tree) return 0; var sumLeft = sum(tree.left); var sumRight = sum(tree.right); return sumLeft + tree.val + sumRight; } var exampleTree = { val: 3, right: { val: 4 }, left: { val: 5, right: {val: 6}, left: {val: 7} } } console.log(sum(exampleTree)); // returns 25 = 3+4+5+6+7 现在我想把函数“sum”转换成一个asynchronous函数: function sumAsync(tree, […]

从遍历文件夹function返回最终值

问题:为什么varvariables不会从walk()函数的外部返回值? 我该如何解决? Hypothosis:这是asynchronous的,console.log发生得太早了。 这将导致我如何使这是一个Promise (我使用节点4.1.1) var walk = function(dir, done) { var results = []; fs.readdir(dir, function(err, list) { if (err) return done(err); var i = 0; (function next() { var file = list[i++]; if (!file) return done(null, results); file = dir + '/' + file; fs.stat(file, function(err, stat) { if (stat && stat.isDirectory()) { […]

如何防止JavaScript一次打开太多的文件?

我目前正在通过编写一个简单的音乐数据库程序来学习javascript和nodeJS。 这个想法非常简单,它recursion地扫描一个目录,parsing任何mp3文件,并从这个信息中创build一个数据库。 我写了我的第一个版本,看起来像这样: var fs = require('graceful-fs'); var metadata = require('musicmetadata'); function recursiveScan(directory){ var files = fs.readdirSync( directory ); // loop through files for (var i=0; i < files.length; i++) { var filePath = directory + files[i]; var stat = fs.statSync(filePath); // Check if it's a directory if(stat.isDirectory()){ // Scan that directory recursiveScan(filePath + '/'); […]

将数组值插入数据库Node.js,Oracle,orawrap

我有一个应用程序在浏览器中运行,并与REST服务进行通信。 剩下的服务可以写数据到Oracle数据库,可以说它必须写这样一个实体: var entity = { "id": 0, "date": new Date(), "comment": 'test' }; 我有一个声明,看起来像这样: ar statement = 'INSERT INTO MY_TABLE ( ' + ' THE_ID ' + ' , THE_DATE ' + ' , THE_COMMENT ' + ' ) VALUES ( ' + ' :id, ' + " :date, " + ' :comment' + […]

从对象属性recursion地生成文件path

我正在使用node.js和作为一个副项目,我创build一个模块,读取一个.json文件,parsing它,然后创build基于object properties和object values目录结构。 对象属性(keys)将是它自己的path/文件和对象值将是该path的文件列表 我试图通过对象递减递减,但我不知道如何从每个对象的最内层对象中提取path 同样,对象将是由用户创build的dynamic的。 var path = 'c:/templates/<angular-app>'; var template = { //outline of 'angular-app' src:{ jade:['main.jade'], scripts:{ modules:{ render:['index.js'], winodws:['index.js'], header:['header.js' ,'controller.js'], SCSS:['index.scss' ,'setup.scss'], } } }, compiled:['angular.js','angular-material.js' ,'fallback.js'], built:{ frontEnd:[],//if the array is empty then create the path anyways backEnd:[], assets:{ fontAwesome:['font-awesome.css'], img:[], svg:[] } } } //desired result… let out […]