Tag: recursion

在node.js中提交一个recursion函数

我在我的应用程序中使用蓝鸟的控制stream,我试图实现promisify扩展我的recursion函数到一个承诺,但它似乎像“then”方法从来没有得到执行 我正在做一个从一个JSON对象到另一个的映射,find函数按recursion方式查看JSON属性,并根据特定的条件返回属性。 var promise = require("bluebird"); var mapToModel = function(res){ // res is a json structure var processes = res.definitions.process; var diagrams = res.definitions.BPMNDiagram; var documents = []; for(var prop in processes) { if(processes.hasOwnProperty(prop)){ var propertyNames = Object.getOwnPropertyNames(processes[prop]); for(var property in processes[prop]){ var mapping ={}; if(property==="$"){ //do something with the process }else{ //shapes mapping.hash = […]

recursion – 节点内存不足

当我运行以下代码9999999+次时,Node返回: FATAL ERROR: CALL_AND_RETRY_2 Allocation failed – process out of memory Aborted (core dumped) 除了增加最大分配大小或任何命令行参数之外,解决此问题的最佳解决scheme是什么? 我想提高代码质量,而不是破解一个解决scheme。 以下是应用程序内recursion的主要部分。 该应用程序是一个负载testing工具。 a.prototype.createClients = function(){ for(var i = 0; i < 999999999; i++){ this.recursiveRequest(); } } a.prototype.recursiveRequest = function(){ var self = this; self.hrtime = process.hrtime(); if(!this.halt){ self.reqMade++; this.http.get(this.options, function(resp){ resp.on('data', function(){}) .on("connection", function(){ }) .on("end", function(){ self.onSuccess(); }); […]

使用JavaScript和Node.js进行asynchronousrecursion

这可能是一个noob的JavaScript问题,但我期待知道我的解决scheme是否是“正确的” 我创build了下面的示例应用程序,重新创build我的错误: 首先在index.js中 var processor = require('./fileProcessor/processor.js'); var container = { source: "source.txt", destination: "destination.txt" }; new processor().process(container); 我创build了我的容器对象,它具有源文件的名称和目标文件的名称。 这被传递给处理器的处理function: var fileProcessor = require('./fileProcessor.js'); module.exports = function Processor() { this.process = function(container) { var file = new fileProcessor(); if(container.finished === undefined) { if(container.body === undefined) { file.read(container, this.process); } else { file.write(container, this.process); } } […]

Javascriptrecursion包装儿童(matryoshka娃娃)

我正在尝试生成基于类似于下面的json文档的文本文档。 [{ "title": "item 1", "nodes": [{ "title": "item 1.1" "nodes": [{ "title": "item 1.1.1" }, { "title": "item 1.1.2" }, { "title": "item 1.1.3", "nodes": [{ "title": "item 1.1.3.1" }, { "title": "item 1.1.3.2" }, { "title": "item 1.1.3.3" }] }] }] }] 我有一个简单的recursion函数,可以正常工作,但是我想生成一个像Matryoshka娃娃的东西: <branch title="item 1"> <branch title="item 1.1"> <item title="item 1.1.1"></item-end> <item […]

有关承诺的细节; 例子

我努力实现诺言。 (我想我理解他们,但我经常得到意想不到的结果,所以也许我不会。) 请考虑这个代码。 function ap() { return new Promise(function(resolve, reject) { console.log('function ap starting want this'); function ender() { console.log('function ender starting want this'); return resolve('ender'); console.log('after return in ender don\'t want this'); //#1 } ender() console.log('after function ender and its resolve ' + 'for Promise don\'t want this'); //#2 }) // Promise } // […]

如何recursion调用asynchronous函数?

我定义了这个函数: // retrieves zip of package manifest supplied var retrieveZip = function(metadataClient, args, callback) { metadataClient.retrieve(args, function(err, result) { metadataClient.checkRetrieveStatus({id: result.result.id, includeZip: 'true'}, function(err, result) { if(result.result.done) { return callback(result); } // else check again!(how??) }); }); } retrieveZip(metadataClient, args, function(result) { console.log(result); }); 这个想法是,客户端将尝试根据args中提供的元数据检索一个zip文件。 API文档(Salesforce SOAP API)要求将retireve方法的结果中提供的id传递到检查状态函数中。 然而这个问题是这样的: 在第一次检查,如果结果是“完成”,那么只需从checkRetreiveStatus (包含结果)返回结果对象的callback, 但如果结果没有完成,我需要再次调用checkRetrieveStatus …从checkRetreiveStatus 天真的做法是将参数从原始的checkRetreiveStatus调用传递到checkRetreiveStatus的新实例,但显然不可能知道这将被调用多less次。 这听起来像我需要一个recursion的解决scheme呢? […]

在nodejs中的dynamodb中进行扫描的recursion函数

所以我需要一个nodejs中的recursion函数来replace这个函数调用: docClient.scan(params, callback) http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/GettingStarted.NodeJs.04.html

使用Underscore / Lodash在JavaScript中完成一个非变异反向拖尾的最佳方法

我是我的node.js项目lodash /下划线的狂热用户,我发现自己的情况下,我需要以类似于下面的代码的方式从右到左recursion遍历数组(假设所有调用是同步的): function makeDir(pathArray) { var unsulliedPath = clone(pathArray); var lastGuy = pathArray.pop(); var restOfEm = pathArray; if dirExists(unsulliedPath) { console.log("Your job is done!"); } else { makeDir(restOfEm); makeDir(unsulliedPath); } } 然而,克隆和改变pathArray参数会让我感到困惑。 所以我可以这样做: function makeDir(pathArray) { var lastGuy = _.last(pathArray); // EITHER I could… var restOfEm = _(pathArray).reverse().tail().reverse().value(); // OR I could do… var restOfEm […]

如何在NodeJS中testingrecursion调用的函数?

我有一个ES6 / 7编写的反复函数,由babel转换。 我有一个循环函数创build,检查是否有用户文件,使用mongoose。 // Keep checking if there is a user, if there is let execution continue export async function checkIfUserExists(){ let user = await User.findOneAsync({}); // if there is no user delay one minute and check again if(user === null){ await delay(1000 * 60 * 1) return checkIfUserExists() } else { // otherwise, […]

recursion调用node.js中的asynchronous函数

我写了一个recursion查询来以数据库级别或分层方式更新数据。 我写了这个代码: let updateInvitationRewards = function(parent, level, callback) { Service.customer.getOneCustomer({ _id: parent }, {}, {}, function(err, data) { console.log(data.email); level–; if (data.parent) { parent = data.parent.id; } else if (level == 0 || data.parent == null) callback("end"); updateInvitationRewards(parent, level–, callback); }); }; updateInvitationRewards(parent, level, function(string) { console.log(string); cb(); }); 这个查询是这样的错误: Error: Callback was already called. […]