我已经预测了我在迭代标记并调用getDetails函数的函数。在getDetails结束时,我在处理所有元素时调用回调函数。内部回调我试图访问州财产,但我无法访问它。我尝试过使用绑定方法但是我得到的错误是Uncaught TypeError:无法读取属性'回调' null。
if($_POST['action'] == "upvote"){
// call upvoteImage function
}else if($_POST['action'] == "downvote"){
// call downvoteImage function
}
答案 0 :(得分:1)
使用箭头函数声明回调函数
callback = () => {
console.log(this.state.markers);
}
并称之为:
if(itemsProcessed === markers.length) {
this.callback();
}
<强>更新:: 强> 您没有使用class绑定handlechange函数。所以首先你需要绑定你的handlechange函数。更好的方法是使用箭头函数,如::
handleChange = (event) => {
现在,如果你想让你的回调函数不再使用handlechange函数,那么你可以这样做(Link of working example)::
callback = () => {
console.log(this.state.markers);
}
handleChange = (event) => {
...
markers.forEach((place,index) => {
services.getDetails(place, (place, status) => {
itemsProcessed++;
if(itemsProcessed === markers.length) {
this.callback();
}
});
});
}
或者如果你想将你的回调函数保留在handlechang函数中,那么就可以这样做(Link of working example)::
handleChange = (event) => {
let callback = () => {
console.log(this.state.markers);
}
...
markers.forEach((place,index) => {
services.getDetails(place, (place, status) => {
itemsProcessed++;
if(itemsProcessed === markers.length) {
callback();
}
});
});
}