namespace.items.Load = function (arg1, arg2) {
$.getJSON("/Object/Items", { "Arg1": arg1, "Arg2": arg2 }, function (Items) {
return Items;
});
}
上記のオブジェクト「アイテム」は範囲外ですか?この関数を呼び出した後、私が得るのは「未定義」だけだからです。どうすればこれを修正できますか?
namespace.items.Load = function (arg1, arg2) {
$.getJSON("/Object/Items", { "Arg1": arg1, "Arg2": arg2 }, function (Items) {
return Items;
});
}
上記のオブジェクト「アイテム」は範囲外ですか?この関数を呼び出した後、私が得るのは「未定義」だけだからです。どうすればこれを修正できますか?
まず、関数return
内にステートメントがありませんLoad
。この場合、undefined
デフォルトで返されます。これまでのところ予期しないことは何もありませんが、次のようなことをやりたかったのでしょう。
namespace.items.Load = function (arg1, arg2) {
return $.getJSON(
"/Object/Items",
{ "Arg1": arg1, "Arg2": arg2 },
function (Items) { return Items; }
);
}
そうは言っても、この種のシナリオをもたらす Ajax 呼び出しが舞台裏で行われていることに注意してください。
function (Items) { return Items; }
と呼ばれます。Load
関数によって返されると期待していたものは、明らかにそうではありませんItems
。これにより、代わりにこの種のソリューションを使用できます: https://stackoverflow.com/a/18793057/1636522。
$.getJSON は promise インターフェイスを実装しているため、これを実行できるはずです。
namespace.items.Load = function (arg1, arg2) {
return $.getJSON("/Object/Items", { "Arg1": arg1, "Arg2": arg2 });
}
namespace.items.Load().then(function (items) {
console.log(items);
});