【问题标题】:Function in for cycle not being called until the for cycle finisfor循环中的函数直到for循环结束才被调用
【发布时间】:2022-12-03 11:04:17
【问题描述】:

在这里,for 循环似乎只执行 console.log(" floors["+i+"]: " + floor.floorNum()) 行,循环遍历所有 5 个元素而不调用其余代码,完成后,才调用 floor.on("up_button_pressed", function()

到底发生了什么,所以我可以解决它?

来源:https://play.elevatorsaga.com/#challenge=2

{
    init: function(elevators, floors) {
        var elevator = elevators[0]; // Let's use the first elevator

        // Whenever the elevator is idle (has no more queued destinations) ...
        elevator.on("idle", function() {
            elevator.goToFloor(2);
            console.log("goToFloor 2 (because idle)")
        });
        elevator.on("floor_button_pressed", function(floorNum) { 
            elevator.goToFloor(floorNum); 
            console.log("goToFloor " + floorNum + " (because floor_button_pressed)")
        } );
        console.log("floors: " + floors)
        for (i = 0; i < floors.length; i++) {
            var floor = floors[i]; 
            console.log("    floors["+i+"]: " + floor.floorNum())
            floor.on("up_button_pressed", function() {
                elevator.goToFloor(floor.floorNum()); 
                console.log("goToFloor " + floor.floorNum() + " (because up_button_pressed)")
            } );
            floor.on("down_button_pressed", function() {
                elevator.goToFloor(floor.floorNum()); 
                console.log("goToFloor " + floor.floorNum() + " (because down_button_pressed)")
            } );
        }
    },
    update: function(dt, elevators, floors) {
        // We normally don't need to do anything here
    }
}

【问题讨论】:

    标签: javascript


    【解决方案1】:

    【讨论】: