Я создаю привязку ampify.js для WebSharper. (https://github.com/aph5nt/websharper.amplifyjs). При тестировании моего расширения я обнаружил одну проблему с реализацией публикации/подписки.
Я объявил обработчик подписки:
let subscribeFn (data:obj) = JS.Alert(data :?> string)
Я создал подписку:
Amplify.Amplify.Subscribe("tryPubSub", subscribeFn)
Когда я хочу отписаться, я делаю:
Amplify.Amplify.Unsubscribe("tryPubSub", subscribeFn)
проблема в том, что subscribeFn был переведен в 2 разные функции. Если я отлаживаю код js и проверяю, что происходит в библиотеке amplify.js, то получаю следующее:
//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);}
Разницы в логике нет, но аргументы разные и из-за этого я не могу отписаться.
let subscribeFn = fun (data:obj) -> JS.Alert(data :?> string)
- person John Palmer   schedule 17.08.2016