gpt4 book ai didi

javascript - 我所在的函数未定义

转载 作者:行者123 更新时间:2023-11-28 20:14:36 25 4
gpt4 key购买 nike

我在 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未定义。

克服该错误的一种方法是将 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 函数。

关于javascript - 我所在的函数未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19398128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com