我正在尝试将本地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);
});

07-28 02:42