我想从匿名函数返回值。如何在以下代码中将返回值分配给$ id变量?
$(document).on("click", '.delete-component', function(e) {
return 4;
});
//$id in this scope should be equal 4
答案 0 :(得分:2)
有一件事你需要注意,你在这里使用异步操作。让我们的数字行以exaction的顺序排列(n表示远远晚些时候的一些高数字)
1] $(document).on("click", '.delete-component', function(e) {
n+1] return 4;
});
2] console.log('here');
你所做的是附加听众点击。点击目前不会发生 - 当有人点击时会发生这种情况。因此,点击发生后您将可以访问它。你可以做两件事:
1)实施例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)实施例2
$(document).on("click", '.delete-component', function(e) {
doSomethingWithValue(4);
});
function doSomethingWithValue() {
console.log('myValue is equal to ' + myValue);
}
您还可以调查$ watch,尤其是Angular在这里为您做了很多工作。
答案 1 :(得分:2)
你需要指定当达到asyn函数或操作时要做什么,所以通常在使用回调时返回是另一个回调......
function aux(param1, callback){
// do whatever...
$(document).on("click", param1, function(e) {
// return 4;
callback(4);
});
}
您将在代码中使用以下内容:
// your context..
// operations 1.. 2..
aux('.delete-component', function(theReturnedValue){
console.log(theReturnedValue); // 4
});
这就是回调'将值'返回到外部范围的方式。