gpt4 book ai didi

JavaScript while 循环将每个数据一一传递到另一个函数中

转载 作者:行者123 更新时间:2023-12-02 16:35:36 28 4
gpt4 key购买 nike

我在 JavaScript 中的 while 循环中遇到了一些逻辑问题。所以基本上我试图循环一个坐标列表,在每个坐标处,我执行 moveNext() ,它将绘制一个标记并循环,直到 while 循环结束。这是代码:

var k = 1;
while(k < pointArr.length){
var coordx = pointArr[k].x;
var coordy = pointArr[k].y;
window.setTimeout(function(){
moveNext(coordx, coordy, k);
},500);
k++;
}

如果参数 k 大于全局计数器变量,则 moveNext() 会在 map 上绘制标记:

var counter = 0;
function moveNext(coordx, coordy, k){
if(k > counter){
console.log(coordx);
console.log(coordy);
map.graphics.clear();
var point = new esri.geometry.Point({ "x": coordx, "y": coordy, "spatialReference": { "wkid": 3414 } });
var symbol = new esri.symbol.PictureMarkerSymbol('img/transportation/currentLoc.GIF', 30, 30);
var PointGraphic = new esri.Graphic(point, symbol);
map.graphics.add(PointGraphic);

var graphic = PointGraphic;
graphic.setSymbol(symbol);
map.graphics.add(graphic);

counter++;
}
}

但是,使用这些代码,它不会在 map 上逐点绘制标记执行 setTimeout。相反,它会一直循环直到 while 循环结束并在那里绘制最后一个标记。有什么指南吗?

提前致谢。

最佳答案

也许如果你想使用 forEach 而不是 while

timeout = 500;
pointArr.forEach(function(coord,index){
setTimeout(function(){
moveNext(coord.x, coord.y, index);
}, timeout * index);
});

希望有帮助..

ps:我不喜欢使用while,因为如果你错误地填充了条件,它有可能无限循环

关于JavaScript while 循环将每个数据一一传递到另一个函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27960282/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com