javascript - 如何让子函数的结果传给父函数
黄舟
黄舟 2017-04-10 16:43:07
[JavaScript讨论组]
$.extend($._, {
  get_color: function(pic) {
    d = {}
    RGBaster.colors(pic, {
      success: function(payload) {
        color = payload.secondary[0]
        rgb = color.split(',')
        brightness = (rgb[0] * 30 + rgb[1] * 59 + rgb[2] * 11 + 50) / 255
        brightness < 50 ? d.theme = 'drak' : d.theme = 'light'
        d.bgcolor = 'rgb(' + color + ')'
        console.log(d); //这个结果是我希望返回到get_color中的
      }
    })
  }
}

RGBaster.colors 是一个异步执行的方法

我希望在调用 $._.get_color('img') 时可以返回上方代码中log的结果,然后现在的问题就是怎么把 RGBaster.colors运算后的结果返回到 $._.get_color

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(1)
伊谢尔伦

没有比较好的方法,像你这样在回调函数中写是比较正常的做法。如果不介意使用 async/await 的话,可以使用 Promise 这么改写一下:

RGBaster._colors = RGBaster.colors;
RGBaster.colors = pic => new Promise(success => RGBaster._colors(pic, {success});

$.extend($._, {
    get_color: async pic => {
        let payload = await RGBaster.colors(pic);
        let d = {
            color: payload.secondary[0],
            bgcolor: `rgb('${payload.secondary[0]}')` 
        };
        
        let rgb = d.color.split(',');
        d.theme = (rgb[0]*30+rgb[1]*59+rgb[2]*11+50)/255 < 50 ? 'dark' : 'light';
        
        console.log(d);
    }
});

另外 $._. 这个莫名的萌啊....

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

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