保持列表node.js的顺序

我正在循环一个对象(我也尝试了一个数组),并build立一个url列表。 我试图枚举使用…在和迭代使用,但我不断失去秩序。

var Model = require('./model'); var Scraper = require('./scraper'); var Pages = []; function generateUrls(limit) { var url = 'http://www.weatheronline.co.uk/SouthAfrica/'; var urls = []; Cities = { 'Windhoek' : 'Windhoek', 'GraaffReinet' : 'GraaffReinet', 'Queenstown' : 'Queenstown', 'Bhisho' : 'Bhisho', }; }; for (City in Cities) { urls.push(url + Cities[City]); } return urls; } // store all urls in a global variable Pages = generateUrls(); function wizard() { // if the Pages array is empty, we are Done!! if (!Pages.length) { return console.log('Done!!!!'); } 

我怎样才能保持这个秩序。 在我刮了一些天气数据后,我在本地主机上显示数据表。 我用mongo,express和jade来使用node.js。

这里是创build表的玉代码。

 doctype html html body table(style='width:100%') tr th City th Min th Max Day 1 th Max Day 2 th Max Day 3 each city, i in Listings tr td span= city.city td span= city.min td span= city.max td span= city.maxday2 td span= city.maxday3 

谢谢

请确保您阅读下面的评论,因为他们有相关的信息!

对于in循环来说,并不能保证它们会以索引0遍历对象。 从这里引用:

for … in语句以任意顺序迭代对象的可枚举属性。

我最近遇到了一个类似的问题,我通过在对象中包含一串键来解决这个问题,它描述了我想迭代对象的顺序。所以当我想迭代刚才迭代的对象时在数组中使用for循环,然后使用obj [key]访问这些键。

这有两个缺点,首先我必须编写代码来保持obj和数组同步,所以当事情被添加到对象时,我需要代码来更新数组。 此外,我不得不确保我在循环中包含一个hasOwnProperty检查,以确保我的数组充满了垃圾键。

这可能不是您寻找的解决scheme,也可能是您可以在自己的场景中实施的解决scheme,但它确实对我有用。 祝你好运!

[编辑]以防万一我不清楚这里是一个代码示例:

 var obj = { Test1: 1, Test3: 3, Test2: 2, propNames: ['Test1', 'Test2', 'Test3'] }; for(var i = 0; i < obj.propNames.length; i++) { if (!obj.hasOwnProperty(obj.propNames[i])) continue; console.log(obj.propNames[i] + ": " + obj[obj.propNames[i]]); } // OUTPUT // Test1: 1 // Test2: 2 // Test3: 3 

我发现了这个问题,这就造成了一个新的问题。 但我可以忍受这个新问题。 我没有发布在我原来的问题的一段代码是…

 var numberOfParallelRequests = 20; for (var i = 0; i < numberOfParallelRequests; i++) { wizard(); } 

这就是问题所在。 它以任何顺序同时发出20个请求。 如果我把它做成1,那么它会一一列出。 新问题现在是非常缓慢的。