我正在爲WebSharper創建ampify.js綁定。 (https://github.com/aph5nt/websharper.amplifyjs)。在測試我的擴展時,我發現發佈/訂閱實現有一個問題。WebSharper中的JavaScript函數簽名
我宣佈訂閱處理程序:
let subscribeFn (data:obj) = JS.Alert(data :?> string)
我創建了一個訂閱:
Amplify.Amplify.Subscribe("tryPubSub", subscribeFn)
當我想退訂,然後我做的:
Amplify.Amplify.Unsubscribe("tryPubSub", subscribeFn)
的問題是, subscribeFn被翻譯成2種不同的功能。 如果我調試JS代碼,並檢查什麼amplify.js的lib下發生的事情,然後我得到如下:
//this is what has been saved when I created a subscription
subscriptions[ topic ][ i ].callback
(L){return i.subscribeFn(L);}
.
//this is what was passed as a callback for the unsubscribe function
callback
(S){return i.subscribeFn(S);}
有一個在邏輯沒有區別,但ARG遊戲不同,因爲我是無法取消訂閱。
不是一個角的專家,而是做什麼subscribeFn使用lambda like'let subscribeFn = fun(data:obj) - > JS.Alert(data:?> string)' –
@JohnPalmer,我試過了,結果是一樣的 – aph5