我试图通过递归函数获取数据,但是当调用递归函数时我的响应对象没有更新;
function checkData(id) {
var response = {
new_id: '',
status: false
}
var order = somefunction(id);
var isOriginal = order.isOriginal
var enddate = order.enddate
var new_id = order.originalId
// first check
if (enddate == '' && isOriginal) {
response.new_id = new_id;
response.status = true;
}
//second check
if (!isOriginal) {
if (new_id) {
checkData(new_id); // recursive call
}
}
return response;
}
如果满足第二个检查条件,它会加载数据,但当响应被控制台时,它会显示较早初始化的初始数据。响应变量未通过递归调用更新。但是,如果第一次检查通过,它会更新。
最佳答案
根据@Fred Stark 的评论,通过重新调整递归调用成功解决,
function checkData(id) {
var response = {
new_id: '',
status: false
}
var order = somefunction(id);
var isOriginal = order.isOriginal
var enddate = order.enddate
var new_id = order.originalId
// first check
if (enddate == '' && isOriginal) {
response.new_id = new_id;
response.status = true;
}
//second check
if (!isOriginal) {
if (new_id) {
return checkData(new_id); // recursive call ---> called return here
}
}
return response;
}
关于javascript - 对象未在 JavaScript 中递归调用的函数中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66471459/