搜索
javascript - 关于img.onload的问题
PHP中文网
PHP中文网 2017-04-10 12:46:01
[JavaScript讨论组]

先看看我的代码

getMainColor: function(imgUrl){
        var mainColor = '191,0,0';
        var canvas = document.createElementNS("http://www.w3.org/1999/xhtml", "html:canvas");
        var canvas = canvas.getContext('2d');
        var logoImg = new Image();
        logoImg.onload = function() {
            logoImg.onload = null;
            try {
                var notColorList = new Array('0,0,0', '255,255,255');
                canvas.width = logoImg.width;
                canvas.height = logoImg.height;
                canvas.drawImage(logoImg, 0, 0, logoImg.width, logoImg.height);
                var imageData = canvas.getImageData(parseInt(logoImg.width / 3), parseInt(logoImg.height / 2), 1, 1).data;
                var imageDataRgba = imageData[0] + ',' + imageData[1] + ',' + imageData[2];
                if (notColorList.indexOf(imageDataRgba) > -1 || Luger.isWhite(imageData[0], imageData[1], imageData[2])) {
                    imageData = canvas.getImageData(parseInt(logoImg.width / 2), parseInt(logoImg.height / 2), 1, 1).data;
                    imageDataRgba = imageData[0] + ',' + imageData[1] + ',' + imageData[2]
                }
                if (notColorList.indexOf(imageDataRgba) == -1 && !Luger.isWhite(imageData[0], imageData[1], imageData[2])) {
                    mainColor = imageDataRgba
                }
                return mainColor;
            } catch (err) {}  // css('borderBottomColor', 'rgba(' + mainColor + ',.6)')
        };
        logoImg.src = imgUrl;
    },

我这是想返回mainColor 但是这么返回什么也得不到,如果放到onload外面,里面的还没执行就返回了,返回的是默认值,我想等onload执行完获取值后再返回请问怎么做。谢谢

PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
怪我咯

没完全看懂你的意思。

如果你是想要在让getMainColor返回mainColor的结果的话,死了这条心吧。JavaScript里的onload只能是异步的,当加载完成后调用你的onload回调函数。JavaScript是实现不了真正的blocking wait的。

也就是说,按照比较JavaScript的写法,你的getMainColor应该也写成异步的而非同步的,接受一个回调函数,然后当取到图片并且计算出mainColor之后getMainColor会去call那个回调函数。

你可以参见 http://stackoverflow.com/questions/5010288/how-to-make-a-function-wait-until-a-callback-has-been-called-using-node-js

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号