Tag: recursion

用Promise分页的最好方法是什么?

我和我的朋友正在承诺,我们正在确保在返回到最初的通话之前,我们正在获取所有的数据页面。 有没有更简单的方法来解决这个问题? function getDocuments(startIndex, result, entries) { startIndex = typeof startIndex !== 'undefined' ? startIndex : 0; result = typeof result !== 'undefined' ? result : {}; entries = typeof entries !== 'undefined' ? entries : []; // build our entries set with the result parameter for(var i in result.items) { try { var id […]

如何在recursion生成器函数中产生请求?

我创build了一个生成器函数recursion检查一个string,并返回一个parsing的输出。 我正在尝试使用koa-request在生成器中发出请求,但是它正在返回undefined。 var parseUserExpression = function *() { var body = yield bodyParser.json(this); var fnString = body.ts; var res = yield parseRulesAndFunctions(fnString, null); this.body = res; }; // Recursive function var parseRulesAndFunctions = function *(aStr, start) { var res; start = start || 0; var fnDetails = getFnDetails(aStr, start); if (fnDetails.fnType === 'run') { var […]

如何在ES5中对recursion匿名函数应用TCO(尾调用优化)

如果我可以通过一个名为recursion函数的tco,应该有一种方法来让tco匿名recursion函数。如果有一种方法,请解释下面如何做到这一点是我的recursion函数和TCO函数。 function recursive(length, callback) { tco((function (i, sum) { var args = arguments; if (i > length) { console.log("break statement"); callback(sum) return sum } else { return args.callee(i + 1, sum + i) } }))(0, 0) } function tco(f) { var value; var active = false; var accumulated = []; return function accumulator() { accumulated.push(arguments); […]

迭代昂贵的asynchronous函数 – 内存约束,recursion?

我有一些问题,我认为是在node.JS服务器端应用程序中使用Promise的一个基本问题 – 不幸的是我看不到如何解决它,尽pipe看到其他类似的问题(我认为)。 基本上我的问题是这样的:我试图检索一些外部数据,然后处理它。 有很多数据,所以我必须逐页检索它。 另外考虑到数据的大小,我的服务器不能一次执行多个调用/进程,因为内存不足和服务器崩溃。 我不知道,直到执行时间,我必须检索多less页来获取所有的数据。 我已经尝试执行一个forEach循环与数组的页数然而,这显然不工作。 例如: pages = [1,2,3,4]; pages.forEach( function(pageNumber){ veryMemoryExpensiveFunctionRetrievingAndProcessingPage(pageNumber).then( // handle the results); }) (这里的行为是所有函数都是同步执行的而服务器内存不足)。 我很困在这里 – 我知道我需要同步多次执行该function,但不知道从哪里开始这样做! 我也试图recursion,但是这又一次导致内存不足,因为每个调用都添加到堆栈中。

Node.js中asynchronousrecursion的问题

我有一个关于Node.js中的recursionasynchronous请求的行为的问题。 下面的函数旨在从MongoDB返回search结果。 如果初始search结果为空,则将文本分割为单个单词,然后尝试对每个单词recursion执行fetchResult(…),将res对象作为parameter passing。 function fetchResult(text, res){ var MongoClient = require('mongodb').MongoClient; MongoClient.connect(mongoURL + "/search", function (err, db) { if(err) throw err; db.collection('results', function(err, collection) { // search for match that "begins with" text collection.findOne({'text':new RegExp('^' + text, 'i')}, function(err, items){ var result = (items == null || items.result == null) ? "" : items; if […]

SQL“子类别”和子子类别“中的所有行:recursion?

我无法编写一个解决以下问题的查询,我相信这需要某种recursion: 我有一个有houses的桌子,每个houses都有一个特定的房屋types,房子,平房等。房屋types相互inheritance,也在一个名为house_types的表中house_types 。 table: houses id | house_type 1 | house 2 | bungalow 3 | villa etcetera… table: house_types house_type | parent house | null villa | house bungalow | villa etcetera… 在这个逻辑中,平房也是别墅,别墅也是房子。 所以当我想要所有别墅的时候,房子2和房子3应该出现,当我想要所有的房子时,房子1,房间2和房间3应该出现,当我要所有的房子时,只有房子3应该出现。 是一个recursion查询的答案,我应该如何解决这个问题。 我在node.js应用程序中使用knex / objection.js 。

在Javascript中recursion树插入

我试着用树节点在JavaScript中recursion地将插入写入到树型数据结构中,但是不要使它工作。 所以我的问题是,如何处理这个问题。 这是我的数据: [ { id: 'a', children: [ 'b', 'c' ] }, { id: 'b', children: [ '' ] }, { id: 'c', children: [ 'b', 'd' ] }, { id: 'd', children: [ 'b' ] } ] 我想让它出现在如下的树中: a /\ bc /\ bd \ b 编辑:添加代码 我以为我可以做这样的事情,但这是行不通的,当然因为嵌套的forEach有很高的复杂性: var Node = require("tree-node"); var testarray […]

无法通过recursion调用node.js中的函数从promiese获得响应

使用node.js Q承诺库我怀疑这是recursion调用一个函数是有用的。 我已经尝试了两种方法来解决我的问题。第一种方法,我试图直接从recursion函数返回而在第二种方法,我试着用Q诺库。 这里是我从那里调用recursion函数的代码,并期待在这里的响应。 function getSearchedUserInTree(userId,body){ var deferred = Q.defer(); var loggedInUserId = userId; var searchUserIdSql = "SELECT rc.user_id,CAST(b.node_id AS CHAR) AS node_id FROM refer_codes AS rc LEFT JOIN btrees AS b ON b.user_id=rc.user_id WHERE rc.refer_code='"+body.refer_code+"'"; connection.query(searchUserIdSql, function (err, result,field) { var getLoggedInNode = "SELECT CAST(b.node_id AS CHAR) AS node_id FROM btrees as b WHERE […]

全局variables值在堆栈超过by node.js中的无限想念recursion后神秘地重置

我想在node.js(v0.4.10)中使用全局值递增来计算无限recursion函数的步骤。 然而,伯爵总是假装为零 > c = 0 > (function f() { c++; console.log(c); f() })(); 1 2 … 18648 RangeError: Maximum call stack size exceeded > c 0 从函数内部将c值logging到控制台显示值实际上是递增的,但是不知何故它在堆栈事故之后最终被重置。 即使使用global.c而不是c 。 这是正确的行为吗? 这里发生了什么? 例如在铬(v14)中, c按预期保持最终计数。 UPDATE 原来以上只在交互模式下才有效。 当代码从文件中被执行,并且try-catch块中包含的函数(以防止提前退出)时,c值是正确的。 c = 0; try { (function f() { c++; f() })(); } catch(e) {}; console.log(c); 然而,交互式node.js和铬javascript控制台之间还是有一些差别,其中的值存在未处理的exception

Node.js中分阶段执行recursion循环

我是一般的Node.js和asynchronous编程的新手,我有一个问题。 我需要在recursion循环中连续工作的服务器,这些步骤将被一致地执行,并且每个阶段应该包括通过websotskets(这已经被理解)的asynchronous接收数据,或者在计时器到期时进入下一阶段。 我意识到,这不是一个小任务,而是如何实现它,图书馆可以提供什么帮助? 我试图理解Step.js和Node.js事件,这是我需要什么? 如果我写了所有这一切同步: //CODE FOR STACKOVERFLOW var previous_round = 'qwerty';// this is string, selected in previous cycle var round_users = users;// 'users' is array of soceket.id all connected users and here a put them into new array 'round_users' with sockets for current cycle io.sockets.emit('users_round', { number: round_users.length }); // send to users information […]