2015-08-30 70 views
1

在做了promisify关于蓝鸟的特定功能之后 - 是否可以获得对已初始化函数的引用?Bluebird:获得原始功能的参考

为什么:我使用的是一个帮助器,它从函数中获取参数名称,以及它返回的promisified函数(_arg0, _arg1, _arg2),我希望可以从某处获取原始函数签名。

+0

这可能有帮助...一个函数promisified版本的名称获得后缀“异步”。剥离并且你回到原来的名字。在任何函数内部,函数本身是'arguments.callee',它的名字是'arguments.callee.name'。 –

+1

为什么不在promisifying之前将原始函数保存到自己的变量中?如果您向我们展示了整体问题的背景,我们可能会有更多选择。或者,你可以附上原件作为promisified之一的财产。 – jfriend00

+0

你的代码不应该依赖代码中的函数签名甚至参数名称。你到底在做什么? – Bergi

回答

1

不,您可以解决它。

如果是用promisifyAll promisified您可以访问它没有Async后缀 - 否则,你必须做你自己:

var promisified = Promise.promisify(cbFunction); 
promisified.original = cbFunction; 

// access as promisified.cbFunction from that point on. 

否则,原有的功能是通过封闭拍摄,你可以不可靠地访问它。诚实地说,你可能不应该因为这会干扰小型化。

+1

*对于*可能不应该* :-) – Bergi

+0

谢谢,所有这些手动方式对我来说真的不起作用(我只有函数引用),我希望蓝鸟能够在某处保存原始文件。当你说我不应该 - 仅仅是因为缩小?或者是否还有其他原因可能也适用于后端? – Madd0g

+0

// @ Madd0g主要是缩小。如果你想让蓝鸟使用参考,请使用promisifyAll。 –