Tag: 循环

NodeJS循环等待callback

我如何等待一个for循环,直到收到callback,然后继续for循环? 这是我的循环: for(var i = 0; i < offer.items_to_receive.length; i++) { console.log("Waiting for callback…"); doSomething(function(data) { console.log("Got data from callback! " + data); }); console.log("Continue for loop now."); } 感谢您的投入!

等待function,然后控制台的结果

我想等我的function先取得所有结果,然后安慰我的结果。 exports.listofAllFeaturedProd = (req, res) => { Product.find({is_featured:'1'},function(error,fetchallFeatProds) { var allProducts = new Array(); var pp = 0; var products = new Array(); for (var ProductId in fetchallFeatProds) { var pArr = []; pArr['_id'] = fetchallFeatProds[ProductId]._id; pArr['name'] = fetchallFeatProds[ProductId].name; pArr['sku'] = fetchallFeatProds[ProductId].sku; pArr['description'] = fetchallFeatProds[ProductId].description; pArr['price'] = fetchallFeatProds[ProductId].price; pArr['large_image'] = fetchingImage(fetchallFeatProds[ProductId]._id); pArr['brand'] = fetchingBrand(fetchallFeatProds[ProductId].brand_id); console.log('#################### […]

Javascript / NodeJS:在数组/对象集合中通过id查找特定对象的最佳方法

概观 所以我已经从我的数据库中取出了一个文件。 里面是对象的嵌套集合。 这个嵌套集合中的每个对象都有一个“_id”属性。 我想使用Javascript在其中find一个关于这些对象的“_id”。 例 http://jsfiddle.net/WilsonPage/tNngT/ 替代例子 http://jsfiddle.net/WilsonPage/tNngT/3/ 问题 我的例子是实现这个目标的最好方法吗? 这将在Node.js块?

范围问题在node.js的循环中调用一个callback函数

在这个线程glproo的帮助下,我构build了这个代码: for(var i=0;i<datos.length;i++){ bittrex.getticker(datos[i].Currency, function(err, data){ if (err){ console.log('ERROR:', err); return 'ERROR:'+ err; } else { if (data.message!='INVALID_MARKET') { this.LasValueBTC=data.result.Last; } else { this.LasValueBTC=''; } } }.bind(datos[i])); } 问题是,外部callback函数datos数组没有更新…因为它是写在这一刻,如果我console.log(这个)里面的function伟大的工作和this.LastValueBTC存在于我的JSON,但function之外如果我console.log(datos)循环后,LastValueBTC不存在..我需要做一个res.send(datos)后循环..

避免在基于promise的循环中发生recursion堆栈溢出?

作为一个简单的例子程序,我有一个连续ping服务器的节点脚本,希望这个程序长时间运行。 程序设置为一个返回一个promise对象的ping函数。 这个承诺是根据ping是工作还是失败来解决或拒绝的。 我希望这个函数在一个循环中运行,所以无论ping是否成功,在前一个请求被parsing之后的一段时间之后 ,下一个ping将被触发。 问题不是这个任务本身,而是我关心我的实现。 我相信最终会导致堆栈溢出。 这里有一些代码来看看发生了什么: function doPing(host) { // returns a promise object. } function doEvery(ms, callback, callbackArgs) { setTimeout(function() { callback.apply(null, callbackArgs) .always(function() { doEvery(ms, callback, callbackArgs); }); }, ms); } doEvery(1000, doPing, [host]); 我试图限制代码只是为了反映以下问题的范围: 这最终会导致堆栈溢出? 有一种模式可以防止使用promise的基于callback的循环溢出吗?

Node.js混淆了每个循环的输出

我想知道如果有人能帮助我理解以下行为。 如果我在node.js服务器上有一个app.js文件,如下所示: var http = require('http'); var _ = require('underscore'); http.createServer(function(request, response) { var x = ''; _.each([1, 2, 3], function(num){ x +=" underscore.js says " + num; }); response.writeHead(200, { 'Content-Type': 'text/html' }) response.end(x); }).listen(3000, null); 然后,每当我请求页面,我看到文字“underscore.js说x”3次。 我期望这样做,因为循环中有3个数字,每个请求都会重置x。 但是,如果我有以下(x移到createServer的callback之外): var http = require('http'); var _ = require('underscore'); var x = ''; // Note x […]

使用node.js + Q延迟/承诺模块从同步callback中​​创build同步循环

stream行的JavaScript模块Q实现了延期/承诺/期货概念。 我认为它主要与node.js一起使用,但它也支持浏览器。 我使用node.js。 要做顺序调用,你使用then()把一个承诺链接到下一个,但是在一个循环中,它可能是违反直觉的,而我发现很难像这个伪代码那样做: forever { l = getline(); if (l === undefined) { break; } else { doStuff(l); } } Q文档包括一个看起来非常相似的例子: var funcs = [foo, bar, baz, qux]; var result = Q.resolve(initialVal); funcs.forEach(function (f) { result = result.then(f); }); return result; 但是,在尝试很多方法来适应这个例子,我没有成功。 与示例代码不同,我不是遍历数组,而是希望循环直到满足结束条件。 另外我总是调用相同的function。 我的函数不会将之前的结果作为下一个调用的参数。 每个调用不需要参数,但返回值决定是否继续循环。 这些看似微不足道的差异正在造成某种无法克服的心理障碍。 现在我明白了为什么许多人对理解承诺有困难。

如何处理循环中的asynchronousNode.js

我有这样一个循环: var i,j,temparray,chunk = 200; for (i=0,j=document.mainarray.length; i<j; i+=chunk) { temparray = document.mainarray.slice(i,i+chunk); var docs = collection.find({ id: { "$in": temparray}}).toArray(); docs.then(function(singleDoc) { if(singleDoc) { console.log("single doc length : " + singleDoc.length); var t; for(t = 0, len = singleDoc.length; t < len;t++) { fs.appendFile("C:/Users/x/Desktop/names.txt", singleDoc[t].name + "\n", function(err) { if(err) { return console.log(err); } […]

在Javascript中的循环性能

正如我的研究让我相信,循环是JavaScript语言中最快的迭代构造。 我在想,也为for循环声明一个条件长度值会更快一些…为了使它更清晰,你认为下面哪个更快? 例子一 for(var i = 0; i < myLargeArray.length; i++ ) { console.log(myLargeArray[i]); } 例子TWO var count = myLargeArray.length; for(var i = 0; i < count; i++ ) { console.log(myLargeArray[i]); } 我的逻辑是这样的:在每次迭代中,在每次迭代中访问myLargeArray的长度在计算上都比较昂贵,那么访问如示例2所示的简单整数值?

NodeJSasynchronous队列速度太快(asynchronous队列方法减速)

我有一个HTTP Get请求,我想分析响应并将其保存到我的数据库。 如果我叫爬行(我)独立我得到好的结果。 但是我必须从1到2000调用crawl()。我得到了很好的结果,但是有些响应似乎会丢失,有些响应是重复的。 我不认为我知道如何调用数千个asynchronous函数。 我正在使用asynchronous模块队列function,但到目前为止,我仍然缺less一些数据,仍然有一些重复。 我在这里做错了什么? 谢谢你的帮助。 我在爬行 我的节点function: function getOptions(i) { return { host: 'magicseaweed.com', path: '/syndicate/rss/index.php?id='+i+'&unit=uk', method: 'GET' } }; function crawl(i){ var req = http.request(getOptions(i), function(res) { res.on('data', function (body) { parseLocation(body); }); }); req.end(); } function parseLocation(body){ parser.parseString(body, function(err, result) { if(result && typeof result.rss != 'undefined') { var locationTitle […]