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函數一般用來延時執行函數或表達式。