JavaScript:将对象分配给另一个对象

时间:2011-09-20 00:01:42

标签: javascript jquery

我正在尝试将本地变量UgcItems分配给uploadedItems,但当我尝试返回值undefined时。如果我将console.log放在.getJSON内,那么我会得到适当的值。问题在于范围在函数内部。我该怎么做才能将JSON从函数中删除?

$(function(){
    var uploadedItems;
    $.getJSON("GetExistingUgcItems?workItemId=1", function (UgcItems) {
        uploadedItems = UgcItems;
    });

    console.log(uploadedItems);
});

谢谢,

亚伦

1 个答案:

答案 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);
});