javascript - Valeur renvoyée une fois l'exécution de la fonction terminée
怪我咯
怪我咯 2017-05-19 10:09:36
0
2
479

Je voudrais demander, c'est-à-dire que j'ai une fonction qui est relativement longue et qui a beaucoup de logique. Ensuite, je définis un tableau vide au début de la fonction. La fonction est d'ajouter des éléments au tableau. puis renvoyez le tableau. Le problème que je rencontre maintenant est que lorsque la fonction renvoie un tableau, elle renvoie un tableau d'une longueur de 0, comme une image. Je voudrais donc demander, outre setTimeout({}), existe-t-il un autre moyen de renvoyer le contenu une fois la fonction exécutée ?

怪我咯
怪我咯

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

répondre à tous(2)
習慣沉默

Pour être honnête, je n'ai pas compris la question que vous vouliez poser, et je n'ai pas vu le code. Après avoir lu la conversation entre vous et ci-dessus, je suis toujours confus, je ne peux que suivre la mienne. devinez. parler.

1. Tout d'abord, ce que vous avez dit ci-dessus est correct. La longueur n'est pas 0. Pour la longueur du tableau, veuillez voir la valeur de la longueur est 1, donc il n'y a pas de problème.

.

2. Deuxièmement, le contenu imprimé dans la console peut ne pas être complet. Par exemple, lorsque le tableau concerné est encore en cours d'exploitation, peu importe l'ajout ou la suppression d'éléments dans le tableau, il ne sera pas directement reflété dans. le contrôle. La console ne sera mise à jour que lorsque vous l'utiliserez, par exemple en cliquant dessus ou en redémarrant la console.

3. Quant à savoir comment renvoyer le tableau une fois l'exécution de la fonction terminée, c'est une question très vague. Tout d'abord, vous devez vérifier s'il existe des opérations asynchrones dans votre fonction, telles que des événements de chargement. non, revenez à la dernière ligne de la fonction. Si tel est le cas, vous devrez peut-être utiliser d'autres méthodes pour gérer le contenu concerné. Offrez une châtaigne :

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

Amis, la longueur de ce tableau est de 1, Array[0] fait référence à l'élément du tableau avec la valeur d'index 0, c'est-à-dire {src: "..."} là-bas. Que voulez-vous dire lorsqu’une fonction revient après exécution ? La fonction setTimeout est généralement utilisée pour retarder l'exécution de fonctions ou d'expressions.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal