我有一个函数可以读取 csv 文件并计算两种类型的值“Client”和“Helper”之间的距离
function readCSV(e){
var file = e.target.files[0];
var helferList =[];
var kundenList =[];
if (!file) {
console.log('file could not be read');
return;
}
var reader = new FileReader();
reader.onload = function(e) {
var contents = e.target.result;
var result = $.csv.toArrays(contents);
$('.output').append(",");
for(i = 0; i< result.length; i++){
if(result[i][0] =="Kunde"){
kundenList.push(result[i]);
}
else if(result[i][0] =="Helfer"){
helferList.push(result[i]);
$('.output').append(result[i][1] + " "+ result[i][2] + ", ");
}
}
$('.output').append("\n");
console.log(kundenList.length);
for(i = 0; i< kundenList.length; i++){
$('.output').append(kundenList[i][1] + " "+ kundenList[i][2] + ", ");
for(j=0; j <helferList.length;j++){
setTimeout(getDistance(kundenList[i],helferList[j]),500);
}
$('.output').append("\n");
}
};
reader.readAsText(file);
}
我遇到的问题是每次距离计算之间必须有延迟。因此我使用:
setTimeout(getDistance(kundenList[i],helferList[j]),500);
但它似乎不起作用,因为计算之间没有延迟
最佳答案
您必须使用乘法器,因为在当前代码中,所有函数都会在 500 毫秒后触发,但不会增量。在 for()
执行 500 毫秒后,所有函数将立即被触发。
要更改此设置,请创建一个带有如下标志的乘法器:
function readCSV(e){
var file = e.target.files[0];
var helferList =[];
var kundenList =[];
if (!file) {
console.log('file could not be read');
return;
}
var reader = new FileReader();
reader.onload = function(e) {
var contents = e.target.result;
var result = $.csv.toArrays(contents);
$('.output').append(",");
for(i = 0; i< result.length; i++){
if(result[i][0] =="Kunde"){
kundenList.push(result[i]);
}
else if(result[i][0] =="Helfer"){
helferList.push(result[i]);
$('.output').append(result[i][1] + " "+ result[i][2] + ", ");
}
}
$('.output').append("\n");
console.log(kundenList.length);
var k = 0;
for(i = 0; i< kundenList.length; i++){
$('.output').append(kundenList[i][1] + " "+ kundenList[i][2] + ", ");
for(j=0; j <helferList.length;j++){
// 500 * k = 500 * 1 | 500 * 2 | etc
setTimeout(getDistance(kundenList[i],helferList[j]),(500 * k++));
}
$('.output').append("\n");
}
};
reader.readAsText(file);
}
关于javascript - settimeout 循环没有延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38345798/