搜索

首页  >  问答  >  正文

javascript - 函数执行完毕后再返回值

想请问一下 就是我有一个函数比较长 逻辑比较多 然后在函数的一开始定义了一个空数组 函数的作用就是在这个数组中添加元素 然后将这个数组返回出去。我现在遇到的问题是 在函数执行 返回数组的时候 返回的是一个
如图片的长度为0的数组。所以想请问一下 除了setTimeout({})外 还有什么办法 可以让函数执行完毕后再返回内容

怪我咯怪我咯2779 天前502

全部回复(2)我来回复

  • 習慣沉默

    習慣沉默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(); //过程大概就这样
    

    回复
    0
  • PHP中文网

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

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

    回复
    0
  • 取消回复