can log but unable to return value from addCallback

7 views
Skip to first unread message

hotani

unread,
Nov 15, 2010, 1:04:24 PM11/15/10
to MochiKit
I can log the value, but it returns as "undefined".

var getOffice = function(county_id) {
var d = loadJSONDoc('/office_from_countytype/'+ county_id +'/');
var off_id;
d.addCallback(function (result) {
off_id=result[0].fields['office'];
log('got office id: '+ off_id);
return off_id;
});
}

The log entry will show "INFO: got office id: 14", but the function
returns "undefined".

Fredrik

unread,
Nov 15, 2010, 4:45:03 PM11/15/10
to MochiKit
You're confusing the return inside addCallback with the return from
the outer getOffice function.

--- modified example:
var getOffice = function(county_id) {
var d = loadJSONDoc('/office_from_countytype/'+ county_id +'/');
var off_id;
d.addCallback(function (result) {
off_id=result[0].fields['office'];
log('got office id: '+ off_id);
return off_id;
});
return d; // <--- !
}

... now, a user can get 'off_id' like this.

var d = getOffice(country_id);
d.addCallback(function(off_id) {
log('got office id:', off_id);
});

(since getOffice makes an asynchronous request any return from it
must, by definition, also be asynchronous.)

HTH
// Fredrik Blomqvist

hotani

unread,
Nov 15, 2010, 6:34:21 PM11/15/10
to MochiKit
thanks for the response - I'll give this a try. I'm still trying to
wrap my head around the concepts of deferred and callbacks....
Reply all
Reply to author
Forward
0 new messages