想請問一下 就是我有一個函數比較長 邏輯比較多 然後在函數的一開始定義了一個空數組 函數的作用就是在這個數組中添加元素 然後將這個數組返回出去。我現在遇到的問題是 在函數執行 返回數組的時候 返回的是一個# 如圖片的長度為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函數一般用來延時執行函數或表達式。