setTimeout向函数参数添加条件
setTimeout add conditional to function parameter
基本上,我想要实现以下目标。我有一个函数"ontimeout",它期望一个函数作为参数,并且只有在给定时间(3s)后,条件为true时才调用该函数:
EventStreamSource.prototype.ontimeout = function(func){
setTimeout(function(){
if(this.source.readyState == 0){
func()}
}, 3000);
};
在另一个脚本中,可能有如下代码:
source.ontimeout(function(){
toastr.error('Command stream not established.')
})
然而,这似乎并不奏效。我对javascript不是很熟悉,我确信我犯了一个严重的错误,但我也一直在思考这个问题太久了,所以多关注一下会很好。
因此,实际的问题是如何在新函数()中调用"func"。
提前感谢!
问题是传递给setTimeout
的函数创建了自己的this
上下文,因此this
不再引用EventStreamSource
的实例。通过如下的闭包传递this.source
:
EventStreamSource.prototype.ontimeout = function(func){
(function(source){ // accept source as an argument to the closure
setTimeout(function(){
if(source.readyState == 0){
func()}
}, 3000);
})(this.source); // pass this.source to the closure
};
另一个没有IIFE(或闭包或任何你想调用它的东西)但解决了相同问题的解决方案:传递给setTimeout的函数创建了自己的this
作用域,所以我们首先将this.source
解引用到一个变量中。
EventStreamSource.prototype.ontimeout = function(func){
var thisSource = this.source;
setTimeout(function(){
if(thisSource.readyState == 0){
func()}
}, 3000);
};
相关文章:
- ng重复向一个元素添加条件类
- 如何在不强制的情况下添加条件文本?[101,pdf格式]
- setTimeout向函数参数添加条件
- 在jQuery中,可以在字符串之间添加条件逻辑吗
- 你能在变量声明中添加条件吗?
- 我想添加条件以更改此脚本中的图像或创建新的图像
- 正在添加条件类
- 如何在shell表达式中添加条件
- 如何在JavaScript中的setInterval函数中添加条件检查
- 如何使用angular js为剑道ui网格添加条件列
- 可以禁用表中的所有字段,并添加条件以启用需要的某些字段
- 如果url不等于特定的url,则添加条件
- 如何为正则表达式添加条件
- 为密码验证JavaScript添加条件
- 如何在javascript中添加条件块
- 如何在指令中为ng类添加条件
- 添加条件时,Jquery不执行动画
- 如何在向表中添加行之前添加条件:jquery
- 在应用limitTo之前添加条件过滤器
- 如何在SoundCloud API Javascript方法中添加条件