user1330964
user1330964

Reputation: 33

How to set a global variable from an asynchronous function

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

Answers (1)

Alexander
Alexander

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

Related Questions