jQuery ajax リクエストでは、コールバックで発生するエラー処理があります。
success: function(a) {
if (a.error) switch (a.error) {
case "formError":
case "clientError":
case "limitError":
doErrorCorrection();
alert("Client-sided error: " + a.errorMessage);
break;
case "serverError":
case "500Error":
doRollback();
doTransactions();
break;
case "generalError":
alert("One plus one is: " + (1+1));
} else doActionsWith(a)
}
これを次のような独自のオブジェクトに移動したいと思います。
var errors = {
...
formError: function() {...},
generalError: function() {...},
...
};
それで、私は言うことができます:
success: function(a) {
if (a.error) return errors[a.error](a.errorMessage);
doActionsWith(a)
}
問題は、スイッチからの大量のリフローがあることです。これをオブジェクトに変換すると、同じ機能が何度も繰り返されることになります。
var errors = {
formError: function() { methodA() },
clientError: function() { methodA() },
limitError: function() { methodA() },
...
//more if I had more reflows
};
そこで、配列/リストをインデックスとして使用することを考えました。私は次のようなインデックスを設定することをいじりました:
var arr = {
test: 'hello world'
};
var index = ['a', 'b', 'c'];
arr[index] = 'array as index';
それは機能しましたが、部分的にしか機能しませんでした。キーを実行すると、文字列として返されました。
for (var key in arr) console.log(key)
//test
//a,b,c
オブジェクトで同じテストを実行しindex = {'a' = true}
、文字列インデックスのみを に設定しobject Object
ますarray as index
。
さて、インデックスとしての配列/オブジェクトは機能しません。スイッチをオブジェクトに再構築するにはどうすればよいですか?