このWebサイトは、PINパッド付きCardReaderを管理するローカルサービスと接続しています。このデバイスを使用して完了することができる多くの異なる操作があります。相続人はその一つの例:jQueryを使用して連鎖AJAX呼び出しを管理する方法
- は、私は今の鎖に相互間のコールバックを使用しますが、前
- は、PIN番号
- リリースデバイス
を求めるデバイスをロックするので、 "ロック"や "リリース"のようなメソッドも使用する新しい操作があるので、コードを変更して、ステップ1と3のコードを再利用できるようにする必要があります。
私はこれをjQueryの約束で解決しようとしていましたが、これにはかなり新しいですが、どういうふうに動作するかは本当に分かりません。誰かが私に手を差し伸べることができる?
これは今使用しているコードの例です。私は例を簡単にするために、関数内からビジネスロジックを削除している:これはあなたのニーズに合うことができる
var CardReader = {
////////////////////
// Different possible messages to the Card Reader
////////////////////
lockDevice: function() {
this.makeAjaxCall("GET", "/LockDevice", this.lockDeviceCallback);
},
getPin: function() {
this.makeAjaxCall("POST", "/getPin", this.getPinCallback);
},
releaseDevice: function() {
this.makeAjaxCall("POST", "/Release", this.releaseDeviceCallback);
},
//////////////////
// Callbacks for each message to the Card Reader
//////////////////
lockDeviceCallback: function(jqXHR, textStatus) {
if (textStatus !== "success") { return; }
this.getCardLogin();
},
getCardLoginCallback: function(jqXHR, textStatus) {
if (textStatus !== "success") { return; }
this.releaseDevice();
},
releaseDeviceCallback: function(jqXHR, textStatus) {
if (textStatus !== "success") { return; }
//End
},
////////////////
// Other methods
////////////////
init: function() {
// UI BIndings
$(#button).on("click", this.logIn.bind(this));
},
logIn: function() {
this.lockDevice();
},
makeAjaxCall: function(callType, resource, callbackMethod) {
$.ajax({
type : callType,
url : "http://localhost:1337" + resource,
cache : false,
dataType : "json",
contentType: "application/json",
context : this,
complete : callbackMethod
});
}
};