suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript – Rückgabewert nach Abschluss der Funktionsausführung

Ich würde gerne fragen, das heißt, ich habe eine Funktion, die relativ lang ist und viel Logik hat. Dann definiere ich ein leeres Array am Anfang der Funktion. Die Funktion der Funktion besteht darin, dem Array Elemente hinzuzufügen und dann das Array zurückgeben. Das Problem, auf das ich jetzt stoße, ist, dass die Funktion, wenn sie ein Array zurückgibt, ein Array mit der Länge 0 zurückgibt, beispielsweise ein Bild. Daher würde ich gerne fragen, ob es außer setTimeout({}) noch eine andere Möglichkeit gibt, die Funktion dazu zu bringen, den Inhalt zurückzugeben, nachdem sie ausgeführt wurde

怪我咯怪我咯2779 Tage vor500

Antworte allen(2)Ich werde antworten

  • 習慣沉默

    習慣沉默2017-05-19 10:11:36

    说实话,我是没看懂你想问的问题,也没看到代码,看了你和上面的对话,也依旧是一脸懵逼,我只能按我自己猜测的想法来讲。

    1.首先,楼上讲得没错,长度不是0,array的长度请看length的值,你那里是1,所以没问题

    2.其次,在控制台里面打印的内容不一定是完整的,就比如说,相关数组还在操作过程中的时候,无论添加还是删除数组里的元素都不会直接反应到控制台,唯有当你操作了,比如说点开,或者重启控制台的时候才会进行一次更新。

    3.至于如何函数运行完才返回数组这是一个很模糊的问题,首先要看你的函数里面有没有异步操作,如onload事件之类的,如果没有,到函数的最后一行return 就行了,如果有,你可能需要用其他办法来处理相关内容。举个栗子:

    var imgArr = ["1.jpg","2.jpg","3jpg"]; //你想要在数组中的图片全部加载完然后转换成base64后再返回数据
    var canvas = document.createElement("canvas"),
        copyArr = imgArr.concat();
    
    var getB64Img = function(resultArr){
        resultArr = resultArr || [];
        var img = document.createElement('img'),
            url = copyArr.shift();
            
        if(!url) return resultArr;
        
        img.onload = function(){
            //这里通过canvas转64码
            resultArr.push(result); //保证了异步队列是排队实现
            getB64Img(resultArr);
        };
        
        img.src = url;
    };
    
    var resultArray = getB64Img(); //过程大概就这样
    

    Antwort
    0
  • PHP中文网

    PHP中文网2017-05-19 10:11:36

    盆友,这个数组的长度为1,Array[0]指的是索引值为0的数组元素,也就是那里的{src:"......"}。你说的函数执行完毕返归指的是啥?setTimeout函数一般用来延时执行函数或表达式。

    Antwort
    0
  • StornierenAntwort