我正在尝试将本地变量UgcItems
分配给uploadedItems
,但当我尝试返回值undefined
时。如果我将console.log
放在.getJSON
内,那么我会得到适当的值。问题在于范围在函数内部。我该怎么做才能将JSON从函数中删除?
$(function(){
var uploadedItems;
$.getJSON("GetExistingUgcItems?workItemId=1", function (UgcItems) {
uploadedItems = UgcItems;
});
console.log(uploadedItems);
});
谢谢,
亚伦
答案 0 :(得分:0)
您遇到的问题是getJSON
默认情况下异步执行。因此,在uploadedItems
命令完成后,console.log(uploadedItems)
的赋值发生。
不是在根函数中定义uploadedItems
,而是定义一个采用uploadedItems
的方法。将所有使用uploadedItems
的代码放在此函数中,并从已完成的处理程序
var withUploadedItems = function(uploadedItems) {
console.log(uploadedItems);
// etc ...
};
$.getJSON("GetExistingUgcItems?workItemId=1", function (UgcItems) {
uploadedItems = fromJSON(toJSON(UgcItems));
withUploadedItems(uploadedItems);
});