eventlistener完成后运行函数

时间:2018-01-11 16:40:03

标签: javascript jquery callback three.js

我有以下代码检查是否有可供用户与之交互的陀螺仪。我通过以下方式执行此操作:

function check_user_hardware(){
    window.addEventListener("devicemotion", function(event){
        if(event.rotationRate.alpha || event.rotationRate.beta || event.rotationRate.gamma){
            if (!gyroscope) {
                gyroscope = true;
                current_interaction_mode = 'gyroscope_option';
                set_user_ui_elements();
            }
        }else{
            followMouse = true;
            current_interaction_mode = 'followMouse_option';
            console.log("checked for motion");
            set_user_ui_elements();
            window.addEventListener('mousemove', get_user_mouse_pos);
        }
        calculate_rotation_mesh_pos(event.rotationRate.beta, event.rotationRate.gamma);
    }, function(){
        console.log("generate_scene???");
        generate_scene();
    });
}

我遇到的问题是在检查之后会产生一些场景 但是这个场景需要在检查中首先设置var。但检查需要很长时间,所以我在检查完成后添加了一个回调 但这次回调永远不会发生......为什么?换句话说,generate_scene???永远不会被记录,generate_scene();永远不会被运行。

为什么会这样?什么是正确的方法呢?

如果有任何不清楚的地方请告诉我,以便澄清:)

1 个答案:

答案 0 :(得分:1)

你的问题是下一个:.addEventListener方法中的第三个参数是函数,它不应该是,因为在文档中第三个参数是布尔值,如果恰好" useCapture"。 尝试从check_user_hardware()中声明generate_scene函数,然后在

之后调用它
calculate_rotation_mesh_pos(event.rotationRate.beta,event.rotationRate.gamma);
generate_scene();

它可能有用。