Reputation: 1370
I would like to return value from anonymous function. How can I assign returned value to $id variable in below code ?
$(document).on("click", '.delete-component', function(e) {
return 4;
});
//$id in this scope should be equal 4
Upvotes: 8
Views: 15695
Reputation: 1249
You need to specify what to do when asyn function or operation is reached, so usually a return when using callbacks is another callback...
function aux(param1, callback){
// do whatever...
$(document).on("click", param1, function(e) {
// return 4;
callback(4);
});
}
and you would use it in you code as following:
// your context..
// operations 1.. 2..
aux('.delete-component', function(theReturnedValue){
console.log(theReturnedValue); // 4
});
This is how callbacks 'return' values to an outer scope.
Upvotes: 4
Reputation: 424
One thing you have to be aware that you work here with asynchronous actions. Let's number lines in order of exaction (n means some high number far far later)
1] $(document).on("click", '.delete-component', function(e) {
n+1] return 4;
});
2] console.log('here');
What you did was attached listener to click. Click won't happen at the moment - it will happen when someone clicks. Therefore you will have access to it after click happens. You can do two things:
1) Example 1
var myValue = 0;
$(document).on("click", '.delete-component', function(e) {
myValue = 4;
});
function abc() {
console.log('myValue is equal to ' + myValue);
}
// if that line happen before clicking, value will be still 0
execture somewhen abc();
2) Example 2
$(document).on("click", '.delete-component', function(e) {
doSomethingWithValue(4);
});
function doSomethingWithValue() {
console.log('myValue is equal to ' + myValue);
}
You can also investigate $watch, especially Angular does here a lot work for you.
Upvotes: 2