4

WebSharper の ampify.js バインディングを作成しています。( https://github.com/aph5nt/websharper.amplifyjs )。拡張機能をテストしているときに、パブリッシュ/サブスクライブの実装で 1 つの問題が見つかりました。

サブスクリプション ハンドラを宣言しました。

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);} 

ロジックに違いはありませんが、引数が異なるため、購読を解除できません。

4

1 に答える 1