微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在对象中绑定函数调用

如何解决在对象中绑定函数调用

目标:在对象中定义的函数调用时执行函数

示例:

var obj = {
    endUpdate: function(){
       ... (async stuff from library,cannot modify this code)
    }
}

我想写这样的东西,知道什么时候endUpdate调用

obj.on('endUpdate',function(){
    // do stuff here when "endUpdate" in above object is called
})

解决方法

您可以像这样轻松创建订阅者功能

var obj = {
   listeners: {
      endUpdate: []
   },on: function(name,callbackFn){
      this.listeners[name].push(callbackFn);
   },runListeners: function(name) {
      this.listeners[name].forEach((fn) => fn());
   },endUpdate: async function(){
       await someStuffFromLib();
       this.runListeners('endUpdate');
   }
}

否则你可以增强对象和链异步功能,只要你一直保持链

 var obj = {
   endUpdate: function(){
      const thisIsAPromise = someStuffFromLib();
      return thisIsAPromise;
   }
}

const newObj = {
    endUpdate: (...args) => obj.endUpdate(...args).then(
                (result) => { console.log(result)})
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。