如何正确使用 jQuery deferreds 来延迟函数的返回,直到函数内的异步调用完成 + 获取返回值?
这是我当前的代码:
function getFields(page)
{
var dff = $.Deferred();
result = {};
$.ajax( //the async call
{
url: page,
success:
function (data)
{
//work out values for field1 & field 2 from data here
result =
{
'field1' : field1,
'field2' : field2
};
},
complete:
function()
{
dff.resolve(result); //my attempt to return the result
}
}
);
return dff.promise();
}
我希望这个打印 {"field1":"value1","field2":"value2"}
var result = getFields('http://something');
console.log(JSON.stringify(result));
但是,结果的值似乎是一个 jQuery 对象 - 所以我做错了什么,但是什么?
谢谢!
PS对不起新手问题,我是第一次使用deferreds,所以我仍然掌握基本概念。