我在javascript中有一个对象。对象中的方法是从对象外部调用的。我希望此方法在200毫秒后自动调用自身(有点递归,但不是完全),直到条件被满足为止。
this.setSearchResult = function(data){
if(initiated){
doSetSearchResult(data);
}else{
console.log("Map is not initiated yet. Waiting 200 ms");
setTimeout(function(){setSearchResult(data);}, 200); // <- Error
}
}
调用setSearchResult的方式是这样的:
mapView = new MapView(imageData);
mapView.setSearchResult(data);
我得到的错误是
ReferenceError: setSearchResult is not defined.
解决该错误的一种方法是将setTimeout调用更改为:
setTimeout(function(){mapView.setSearchResult(data);}, 200);
但是我发现这很丑陋(即使它可能在我的应用程序中也可以)。
有适当的方法吗?我必须在setSearchResult中跳过使用setTimeout吗?
最佳答案
我认为这应该工作:
this.setSearchResult = function(data){
if(initiated){
doSetSearchResult(data);
}else{
var _this = this;
console.log("Map is not initiated yet. Waiting 200 ms");
setTimeout(function(){_this.setSearchResult(data);}, 200); // <- Error
}
}
这是因为您在回调函数中,所以您无权访问setSearchResult函数。