繁体   English   中英

如何从js中的匿名函数返回值

[英]How to return value from anonymous function in js

我想从匿名函数返回值。 如何在下面的代码中将返回值分配给 $id 变量?

$(document).on("click", '.delete-component', function(e) {
     return 4;
 });

 //$id in this scope should be equal 4

您需要指定到达 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
});

这就是回调将值“返回”到外部作用域的方式。

您必须注意的一件事是您在这里使用异步操作。 让我们按严格的顺序对行进行编号(n 表示远在很久以后的某个高数)

1]    $(document).on("click", '.delete-component', function(e) {
n+1]    return 4;
      });
2]    console.log('here');

您所做的是附加侦听器以单击。 目前不会发生点击 - 当有人点击时会发生。 因此,您将可以在点击后访问它。 你可以做两件事:

  1. 在上面的范围内声明 var。
  2. 将值转发给回调

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 在这里为你做了很多工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM