Rumah  >  Soal Jawab  >  teks badan

javascript - Kembalikan nilai selepas pelaksanaan fungsi selesai

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

怪我咯怪我咯2710 hari yang lalu457

membalas semua(2)saya akan balas

  • 習慣沉默

    習慣沉默2017-05-19 10:11:36

    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(); //过程大概就这样
    

    balas
    0
  • PHP中文网

    PHP中文网2017-05-19 10:11:36

    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.

    balas
    0
  • Batalbalas