Amplify.js を使用してイベントのサブスクライブを解除する方法がわかりません。イベントが積み重なっていき、ドキュメントに従って単純なmplify.unsubscribeが機能しません。
私は通常、匿名のコールバックを使用しますが、名前付きのコールバックの方が登録解除しやすいと考えました。したがって、以下のコードでは、ボタンのクリック後に発行される「registerInterest」イベントを購読しています。
サブスクライブ関数のコールバックは、フォーム送信を開始します。このフォーム送信が失敗し、ユーザーが再度送信をクリックすると、amplifyjs の「サブスクリプション」スタックが「registerInterest」の 2 つのサブスクリプションを登録したため、2 つのフォーム送信リクエストが発生します。このスタックは、送信がクリックされるたびに増加します。
「registerInterest」イベントの登録を解除したいのですが、イベントを重複させたくありません。
amplify.subscribe('registerInterest',function postRegisterData() {
jcl.dataManager({
type: 'POST',
url: jcl.registerUrl,
data: register,
dataType: 'json',
successEventName: 'registerSuccess',
contentType: 'application/json',
errorEventName: 'registerError',
beforeSend: function (req) {
req.setRequestHeader( 'Token', jcl.authToken );
req.setRequestHeader( 'SubscriberCode', jcl.subscriberCode );
}
});
return false;
});
amplify.publish( 'registerInterest' );
ドキュメントから、サブスクライブ機能に「return false」を追加すると機能するはずですが、機能しませんでした。また、サブスクライブ機能内に以下を追加してみました。
amplify.unsubscribe('registerInterest',postRegisterData);