功能返回错误"无法读取属性'然后'未定义"

时间:2017-06-14 19:44:39

标签: javascript promise

代码:

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?

1 个答案:

答案 0 :(得分:-2)

您只能对退回的承诺使用然后,因此您需要更改

function parseRequestAndCreateCarList(data) {
    return carListParsing(data);
}

function parseRequestAndCreateCarList(data) {
    return new Promise(function(resolve, reject) {
        resolve(carListParsing(data))
    });
}