代码:
let parseCarList = [];
function addNewCars(req, res) {
parseRequestAndCreateCarList(req.body)
.then(function () {
if (parseCarList.length != 0) {
res.status(200).send('OK');
}
}, function (err) {
res.status(200).send(err);
});
}
function parseRequestAndCreateCarList(data) {
return carListParsing(data);
}
function carListParsing(data, parentId = null) {
//this function don't return anything
//It parse req.body and fill the parseCarList array
//I can't return anything because I use recursion
parseCarList.push({
car_company: data.car_company,
parent_id: parentId
});
if (data.daughters) {
data.daughters.forEach(item => {
carListParsing(item, data.car_company);
});
}
}
我的函数carListParsing是做数组:
[ { car_company: 'vw', parent_id: null },
{ car_company: 'seat', parent_id: 'vw' }]
但我想确定,它的功能不会阻止我的代码。
我收到错误"无法读取属性'然后'未定义"。我的函数parseRequestAndCreateCarList是否返回已满足的承诺? 为什么在这种情况下'然后'未定义?
P.S。有没有办法让carListParsing没有包装器parseRequestAndCreateCarList?
答案 0 :(得分:-2)
您只能对退回的承诺使用然后,因此您需要更改
function parseRequestAndCreateCarList(data) {
return carListParsing(data);
}
到
function parseRequestAndCreateCarList(data) {
return new Promise(function(resolve, reject) {
resolve(carListParsing(data))
});
}