gpt4 book ai didi

javascript - 嵌套函数中 undefined variable

转载 作者:行者123 更新时间:2023-12-03 02:14:22 25 4
gpt4 key购买 nike

我有一个返回 ID 的 http post 请求。然后我尝试将该 ID 传递给另一个函数。但是,在下一个函数中,我有一个超时,它将循环该函数以检查状态。每次在超时函数内 ID 都返回未定义。

第一个函数

这里我有“res”,它是另一个函数的结果。我从返回的 json 中获取状态 ID 并将其发送到“getAlbum”。

anotherFunction(res) {
this.getAlbum(res);
}

获取相册

如果我立即在此函数内执行控制台日志,它会正确发出正确的 ID。但是,如果我在“checkAblumStatus”函数内执行此操作,则 id 部分未定义。

getAlbum(id){

var statusID = id.status_id;

console.log('id = ' + statusID) // returns id

var statusIDRequest = 'url' + statusID;

var checkAblumStatus = function (statusIDRequest) {

console.log('statusIDRequest = ' + statusIDRequest) // returns undefined for the ID part

this.http.get(statusIDRequest).subscribe(res => {
if (res.status == "completed") {
// completed
} else if (res.status == "failed") {
// failed
} else {
setTimeout(checkAblumStatus, 1000);
}
});
};

setTimeout(checkAblumStatus, 1000);
}

如果有任何帮助,我们将不胜感激:)

最佳答案

发生这种情况是因为变量的范围。

  var checkAblumStatus = function (statusIDRequest) {

console.log('statusIDRequest = ' + statusIDRequest) // returns undefined for the ID part

this.http.get(statusIDRequest).subscribe(res => {
if (res.status == "completed") {
// completed
} else if (res.status == "failed") {
// failed
} else {
setTimeout(checkAblumStatus, 1000);
}
});
};

在函数的上下文中,this 引用函数本身,而不是您的对象。

您需要使用像这样的闭包或粗箭头。

  var checkAblumStatus = (statusIDRequest) => {

您还需要为您的调用提供一个变量。

setTimeout(checkAblumStatus(variable), 1000);

关于javascript - 嵌套函数中 undefined variable ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49424225/

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