Javascript 承诺。一切都不会发生;不要等待新的承诺来解决

Javascript 承诺。一切都不会发生;不要等待新的承诺来解决,javascript,node.js,promise,single-page-application,Javascript,Node.js,Promise,Single Page Application,这是使用nodejs和jquery的spa的一部分。getToday函数控制台记录“result:”,所以整个过程应该是控制台记录1,然后是result:,然后是2,但它并不等待getToday完成。输出为1,2,结果 app.get('/incidents/all', function(req, res){ let data = globals.dataTopdesk; let output = {} Promise.all([ data.length,

这是使用nodejs和jquery的spa的一部分。getToday函数控制台记录“result:”,所以整个过程应该是控制台记录1,然后是result:,然后是2,但它并不等待getToday完成。输出为1,2,结果

app.get('/incidents/all', function(req, res){
    let data = globals.dataTopdesk;
    let output = {}
    Promise.all([
        data.length,
        calculateProcessingStatus(data),
        calculateOnHold(data),
        calculateOpen(data),
        calculateStatus(data),
        calculateCallType(data);
    ])
    .then(function(values) {
        output.all = values[0]
        output.processingStatus = values[1],
        output.onHold = values[2],
        output.open = values[3],
        output.status = values[4],
        output.callType = values[5]
        return output;
    })
    .then(function(output) {
        console.log('1')
        return new Promise(resolve=> {
            output.today = getToday(db, output)
            resolve(output);
        })
    })
    .then(function(output) {
        console.log('2')
        res.send(output)
    })
    .catch (function(err) {
        res.send('failed: ' + err)
    })
})

为什么不等待新承诺的解决?

如果
getToday
是异步的,并返回一个承诺,则将其添加到链中,而不使用看起来无用的额外承诺包装:

返回getToday()。然后(数据=>{
output.today=数据;
返回输出;

});如果
getToday
是异步的并返回一个承诺,则将其添加到链中,而不使用看起来无用的额外承诺进行包装:

返回getToday()。然后(数据=>{
output.today=数据;
返回输出;

});
getToday
是一个承诺吗?你是指一个
then()
中的新承诺吗?为什么会这样?答应我,大家都不知道。这不是你给它的承诺。
getToday()
中的代码本身就是问题所在。
output.today=getToday(db,output)
不会等待任何异步的东西
getToday()
所做的事情。getToday是一个异步函数,它等待另一个具有承诺的函数并返回一个对象。Taplar可能已经有了答案。
getToday
是一个承诺吗?你是说一个
then()中的新承诺吗?为什么会这样?答应我,大家都不知道。这不是你给它的承诺。
getToday()
中的代码本身就是问题所在。
output.today=getToday(db,output)
不会等待任何异步的东西
getToday()
所做的事情。getToday是一个异步函数,它等待另一个具有承诺的函数并返回一个对象。塔普拉可能已经有了答案,这就是答案。非常感谢。我将在4分钟内把它标记为答案。这就成功了。非常感谢。我将在4分钟内把它标为答案。