上下文混合在$.deferred.promise中
Context getting mixed in $.deferred.promise
我有以下代码;
function myFunction(promiseObject){
var that = this;
promiseObject
.done(function(){
//using that here
});
}
上述函数在多个上下文中被调用,因此在每次调用中this
更改的值。我面临的问题是,对于许多并发调用,that
的值被另一个也在完成过程中的上下文覆盖。
我想了解这可能是什么原因。还想了解that
myFunction
中定义但在附加的回调方法中使用的变量的作用域背后的概念是什么。
提前致谢:)
-德夫斯里
我希望我正确理解您的问题。 在myFunction
中定义并在回调中可访问的that
变量背后的概念是工作中的词法范围。 它正在创建一个闭包(基本上是对定义回调的函数的执行环境的引用),以便回调访问。
myFunction
内部this
的价值将取决于您如何调用myFunction
。
如果您希望myFunction
具有特定的上下文,则需要使用该上下文调用它,如下所示:
var myContext = { foo: "bar" };
myFunction.call(myContext);
myFunction 内部的 this
值现在将等于 myContext
。
如果您希望that
值在调用之间保持一致,则需要确保在任何地方都使用正确的上下文调用/应用myFunction
。
或者,您可以使用像 underscore.js 的 _.bind
这样的函数:
myFunction = _.bind(myFunction, myContext);
myFunction
现在将始终绑定到特定的上下文。
相关文章:
- 使用promise和mongoose对文档进行排序
- 测试Angular Service解决错误回调中的promise
- 节点协同与生成器和Promise并行流量控制
- 根据是否解析了 Promise 从函数返回值
- 将一个方法转换为promise:Nodejs
- 函数在promise被解析后被调用,但Jasmine未通过测试.为什么?
- jQuery Deferred and promise-错误:对象没有't支持属性或方法'然后'
- 在jQuery中返回promise()或deferred有什么区别
- jQuery Deferred和Promise用于同步和异步函数的顺序执行
- 上下文混合在$.deferred.promise中
- CodedUI Test + deferred/promise:Mouse.Click() 执行点击,调用 httpPo
- 学习Javascript/Jquery promise&deferred,当多次使用时出现问题
- $.Deferred().promise vs $.get().promise
- Promise deferred ajax api jQuery
- 在promise中包装整个代码块时,promise和deferred之间的区别
- 在使用Q' deferred/promise时组合一个同步函数
- 在jQuery Deferred / Promise中包装webSql的executeSql调用
- 跨不同的对象属性设置deferred/promise
- Js的Deferred/Promise/Future与Scala等函数式语言相比
- 如何在自定义函数中使用jQuery的promise/ deferred