首页 > 如何让子函数的结果传给父函数

如何让子函数的结果传给父函数

$.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


没有比较好的方法,像你这样在回调函数中写是比较正常的做法。如果不介意使用 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);
    }
});

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

【热门文章】
【热门文章】