2015-08-30 106 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。 –