84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
想请问一下 就是我有一个函数比较长 逻辑比较多 然后在函数的一开始定义了一个空数组 函数的作用就是在这个数组中添加元素 然后将这个数组返回出去。我现在遇到的问题是 在函数执行 返回数组的时候 返回的是一个 如图片的长度为0的数组。所以想请问一下 除了setTimeout({})外 还有什么办法 可以让函数执行完毕后再返回内容
走同样的路,发现不同的人生
说实话,我是没看懂你想问的问题,也没看到代码,看了你和上面的对话,也依旧是一脸懵逼,我只能按我自己猜测的想法来讲。
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(); //过程大概就这样
盆友,这个数组的长度为1,Array[0]指的是索引值为0的数组元素,也就是那里的{src:"......"}。你说的函数执行完毕返归指的是啥?setTimeout函数一般用来延时执行函数或表达式。
说实话,我是没看懂你想问的问题,也没看到代码,看了你和上面的对话,也依旧是一脸懵逼,我只能按我自己猜测的想法来讲。
1.首先,楼上讲得没错,长度不是0,array的长度请看length的值,你那里是1,所以没问题
2.其次,在控制台里面打印的内容不一定是完整的,就比如说,相关数组还在操作过程中的时候,无论添加还是删除数组里的元素都不会直接反应到控制台,唯有当你操作了,比如说点开,或者重启控制台的时候才会进行一次更新。
3.至于如何函数运行完才返回数组这是一个很模糊的问题,首先要看你的函数里面有没有异步操作,如onload事件之类的,如果没有,到函数的最后一行return 就行了,如果有,你可能需要用其他办法来处理相关内容。举个栗子:
盆友,这个数组的长度为1,Array[0]指的是索引值为0的数组元素,也就是那里的{src:"......"}。你说的函数执行完毕返归指的是啥?setTimeout函数一般用来延时执行函数或表达式。