成功回调不是一个函数

successCallback is not a function

本文关键字:一个 函数 回调 成功      更新时间:2023-09-26

有人能告诉我为什么我的js中successCallback is not a function吗?

这是调用它的代码:

function fillData(data){
        this.raw = data;
    }
function AnimatedModel(posx, posy, posz,sx,sy,sz,r,g,b,a, name, yd){
        this.x = posx;
        this.y = posy;
        this.z = posz;
        this.scale = new Array(sx,sy,sz);
        parseBinFile(this, name)
        this.r = r;
        this.g = g;
        this.b = b;
        this.a = a;
        this.yawDeg = yd;
        this.fillData = fillData;
    }
    var zombie = new AnimatedModel(0,0, 0, 0.2,0.2,0.2, 0.0,1.0,0.6,0.2, "zom3.ms3d", 0);
function parseBinFile(model, name){
        getServerFileToArrayBufffer(name, model.fillData)
        console.log(model.raw);
    }

    function getServerFileToArrayBufffer(url, successCallback){
            // Create an XHR object
            var xhr = new XMLHttpRequest();
            xhr.onreadystatechange = function () {
            if (xhr.readyState == xhr.DONE) {
                if (xhr.status == 200 && xhr.response) {
                        // The 'response' property returns an ArrayBuffer
                        successCallback(xhr.response);
                    } else {
                        alert("Failed to download:" + xhr.status + " " + xhr.statusText);
                    }
                }
            }
            // Open the request for the provided url
            xhr.open("GET", url, true);
            // Set the responseType to 'arraybuffer' for ArrayBuffer response
            xhr.responseType = "arraybuffer";
            xhr.send();
        }

编辑:忘记了填充数据功能。

AnimatedModel中设置fillData属性之前,您在AnimatedModel构造函数中调用parseBinFile(),因此如果这是导致问题的调用,则需要在调用parseBinFile(this, name)之前完全初始化AnimatedModel对象。