javascript - 函数执行完毕后再返回值
怪我咯
怪我咯 2017-05-19 10:09:36
0
2
456

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

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
習慣沉默

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

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(); //过程大概就这样
Ty80

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!