Reputation: 33
I'm stuck on this asynchronous function problem. I need to set a global variable with data which I get from a callback function. How can I do this?
var soundId;
soundcheck(soundId, function (num){getSound(soundId, num)});
//callback
function getSound (soundId, result) {
var res = result;
if (!soundId) {
soundId = res;
}
console.log(soundId);
};
function soundcheck(soundId, callback) {
var lpid = $("a#entered_user_link").attr('href').substring(6);
chrome.extension.sendMessage({lpid: lpid}, function(response) {
if (response.resp) {
check = response.resp;
callback(check);
}
});
};
// i need to put response in this variable to use it in future
console.log(soundId);
Upvotes: 3
Views: 865
Reputation: 23537
You may want to keep it simple, specially without shadowing your variables.
var soundId;
soundCheck(function(result) {
if(result) {
soundId = result;
};
});
var soundCheck = function(callback) {
var lpid = $("a#entered_user_link").attr('href').substring(6);
chrome.extension.sendMessage({lpid: lpid}, function(response) {
callback(response.resp);
});
};
There is no reason to pass around soundId
after all.
Upvotes: 3