0

我有以下代码;

function myFunction(promiseObject){
     var that = this;

     promiseObject
        .done(function(){
                 //using that here
              });
}

上面的函数在多个上下文中被调用,因此this每次调用的变化都是有价值的。我面临的问题是,对于许多并发调用,值that被另一个也在完成过程中的上下文覆盖。

我想了解这可能是什么原因。还想了解在附加的回调方法中that定义但使用的变量范围背后的概念是什么。myFunction

提前致谢 :)

-devsri

4

1 回答 1

4

我希望我能正确理解您的问题。that在回调中定义和访问的变量背后的概念myFunction是词法作用域在起作用。它正在创建一个闭包(基本上是对定义回调的函数的执行环境的引用)以供回调访问。

thisinside of的值myFunction将取决于您如何调用myFunction

如果您希望 amyFunction具有特定的上下文,则需要使用该上下文调用它,如下所示:

var myContext = { foo: "bar" };
myFunction.call(myContext);

myFunction 内部的值this现在将等于myContext

如果您希望您的值that在调用之间保持一致,则需要确保myFunction在任何地方使用正确的上下文调用/应用。

或者,您可以使用 underscore.js 之类的函数_.bind

myFunction = _.bind(myFunction, myContext);

myFunction现在将始终绑定到特定的上下文。

于 2013-11-07T08:18:45.047 回答