【发布时间】:2021-06-25 14:49:47
【问题描述】:
我有一个在 node.js 中运行的简单 javascript 文件。我只是想让循环每 1.5 秒运行一次。我正在使用 setTimeout(考虑过使用睡眠)但无法让它运行。
我正在尝试在下面的代码中为位于 for (let [key, value] of Object.entries(rows)) { 的 for 循环设置延迟。
查询运行,但是,它从不遵守我指定的 1.5 秒延迟。
非常感谢。
const fs = require('fs');
const papa = require('papaparse');
const axios = require('axios');
const apiKey = 'mySecret'
// console.log(papa);
let data = undefined;
const file = './FileWithColumnData.csv';
let content = fs.readFileSync(file, 'utf8');
let rows;
papa.parse(content, {
header: true,
delimiter: ',',
complete: function(results) {
rows = results.data
usingFile = 'results.csv'
if(fs.existsSync(usingFile)) {
fs.unlinkSync(usingFile)
}
const headerRow = 'Account Number,Name,Primary Street,Primary City,Primary State,Primary ZIP Code,District Number\n';
fs.appendFileSync(usingFile, headerRow);
for (let [key, value] of Object.entries(rows)) {
setTimeout(function () {
let newLine = '';
let districtNumber = ''
const address = value['Primary Street'] + ' ' + value['Primary City'] + ', ' + value['Primary State'] + ' ' + value['Primary ZIP Code']
const addressEncoded = encodeURI(address)
const axiosUrl = 'https://www.googleapis.com/civicinfo/v2/representatives?key=' + apiKey + '&address=' + addressEncoded
axios.get(axiosUrl)
.then((res) => {
let _this = this
const offices = res.data.offices;
for (let [key2, value2] of Object.entries(offices)) {
if (value2['name'] === 'Cook County Commissioner') {
const districtVal = value2['divisionId']
districtNumber = districtVal.length == 63 ? districtVal.slice(-1) : districtVal.slice(-2)
newLine = value['Name'] + ',' + value['Primary Street'] + ',' + value['Primary City'] + ',' + value['Primary State'] + ',' + value['Primary ZIP Code'] + ',' + districtNumber + '\n'
fs.appendFileSync(usingFile, newLine);
}
}
})
.catch(function (error) {
// handle error
newLine = value['Name'] + ',' + value['Primary Street'] + ',' + value['Primary City'] + ',' + value['Primary State'] + ',' + value['Primary ZIP Code'] + ',Not Found\n'
fs.appendFileSync(usingFile, newLine);
})
}, 1500);
}
}
});
【问题讨论】:
标签: javascript node.js settimeout