javascript - Kembalikan nilai selepas pelaksanaan fungsi selesai
怪我咯
怪我咯 2017-05-19 10:09:36
0
2
506

Saya ingin bertanya, iaitu, saya mempunyai fungsi yang agak panjang dan mempunyai banyak logik Kemudian saya menentukan tatasusunan kosong pada permulaan fungsi itu dan kemudian kembalikan tatasusunan. Masalah yang saya hadapi sekarang ialah apabila fungsi mengembalikan tatasusunan, ia mengembalikan tatasusunan dengan panjang 0, seperti gambar. Jadi saya ingin bertanya sama ada terdapat cara lain selain setTimeout({}) untuk membuat fungsi mengembalikan kandungan selepas ia dilaksanakan

怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(2)
習慣沉默

Sejujurnya, saya tidak faham soalan yang anda ingin tanyakan, dan saya tidak melihat kod saya selepas membaca perbualan antara anda dan di atas, saya hanya boleh mengikuti saya sendiri teka.

1 Pertama sekali, apa yang anda katakan di atas adalah betul. Panjangnya bukan 0. Untuk panjang array, sila lihat nilai panjang anda adalah 1, jadi tiada masalah.

2 Kedua, kandungan yang dicetak dalam konsol mungkin tidak lengkap Sebagai contoh, apabila tatasusunan yang berkaitan masih dalam proses operasi, tidak kira menambah atau memadam elemen dalam tatasusunan, ia tidak akan ditunjukkan secara langsung. kawalan. Konsol hanya akan dikemas kini apabila anda mengendalikannya, seperti mengklik padanya atau memulakan semula konsol.

3 Bagi cara mengembalikan tatasusunan selepas fungsi selesai dijalankan, ini adalah soalan yang sangat kabur Pertama sekali, anda perlu menyemak sama ada terdapat operasi tak segerak dalam fungsi anda, seperti acara onload tidak, kembali ke baris terakhir fungsi itu. Jika ya, anda mungkin perlu menggunakan kaedah lain untuk mengendalikan kandungan yang berkaitan. Berikan buah berangan:

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

Kawan, panjang tatasusunan ini ialah 1, Tatasusunan[0] merujuk kepada elemen tatasusunan dengan nilai indeks 0, iaitu {src: "..."} di sana. Apakah yang anda maksudkan apabila fungsi kembali selepas pelaksanaan? Fungsi setTimeout biasanya digunakan untuk menangguhkan pelaksanaan fungsi atau ungkapan.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan