我正在尝试将本地var UgcItems
分配给uploadedItems
,但是当我尝试返回值时,会得到undefined
。如果将console.log
放在.getJSON
内,则将得到适当的值。问题在于作用域在函数内部。我该怎么做才能使JSON脱离功能?
$(function(){
var uploadedItems;
$.getJSON("GetExistingUgcItems?workItemId=1", function (UgcItems) {
uploadedItems = UgcItems;
});
console.log(uploadedItems);
});
谢谢,
亚伦
最佳答案
您遇到的问题是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);
});