Javascript 函数get value reader.onload

Javascript 函数get value reader.onload,javascript,asynchronous,filereader,Javascript,Asynchronous,Filereader,mydetectFaces函数不返回填充变量,reader.onload不提供值。我尝试了不同的方法,但不起作用,所以我决定联系你。专家帮助 async function detectFaces(element){ var file = element.files[0], faceImage=[]; if(file){ try { var reader = new FileReader();

mydetectFaces函数不返回填充变量,reader.onload不提供值。我尝试了不同的方法,但不起作用,所以我决定联系你。专家帮助

async function detectFaces(element){

    var 
        file = element.files[0],
        faceImage=[];

    if(file){
        try {
            var reader = new FileReader();
            reader.readAsDataURL(file);
            reader.onload = async function(faceImage) {
                url = reader.result;
                
                const inputImg = await faceapi.fetchImage(url)
                const displaySize = { width: inputImg.width, height: inputImg.height }
                //faceapi.matchDimensions(canvas, displaySize)
                const detections = await faceapi.detectAllFaces(inputImg, new faceapi.TinyFaceDetectorOptions());
                const resizedDetections = faceapi.resizeResults(detections, displaySize);
                faceImage = await faceapi.extractFaces(inputImg, resizedDetections).then(val => {
                    if (val[0]){
                        //displayExtractedFaces(faceImage);
                        console.log('Detect face');
                        return true;
                    }else{
                        //element.value = null;
                        console.log('No face');
                        return false;
                    }
                });

                console.log(faceImage);//return second get true
                return faceImage;
            }

            console.log(faceImage);//return first get []
            return faceImage;

        }catch(err) {
            console.error(err);
        }
    }
            
}

这看起来像是范围界定问题。请确保在调用的函数作用域中返回值。否则,你可以与JS的承诺人合作。这看起来像是范围界定问题。请确保在调用的函数作用域中返回值。否则,您可以使用JS的承诺