javascript - 函數執行完畢後再回傳值
怪我咯
怪我咯 2017-05-19 10:09:36
0
2
482

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板