想请问一下 就是我有一个函数比较长 逻辑比较多 然后在函数的一开始定义了一个空数组 函数的作用就是在这个数组中添加元素 然后将这个数组返回出去。我现在遇到的问题是 在函数执行 返回数组的时候 返回的是一个 如图片的长度为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函数一般用来延时执行函数或表达式。