How can I correctly use jQuery deferreds to delay return of function until async call within function complete + get return value?
This is my current code:
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();
}
I want this to print {field1:value1,field2:value2}
var result = getFields('http://something');
console.log(JSON.stringify(result));
However, the value of result appears to be a jQuery object - so I'm doing something wrong, but what?
Thanks!
P.S. Sorry for the newbie question, I am a first time user of deferreds, so I am still grasping the basic concepts.