javascript - 函数执行完毕后再返回值

查看:122
本文介绍了javascript - 函数执行完毕后再返回值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

想请问一下 就是我有一个函数比较长 逻辑比较多 然后在函数的一开始定义了一个空数组 函数的作用就是在这个数组中添加元素 然后将这个数组返回出去。我现在遇到的问题是 在函数执行 返回数组的时候 返回的是一个
如图片的长度为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(); //过程大概就这样

这篇关于javascript - 函数执行完毕后再返回值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆