首页 > 解决方案 > 无法使用承诺正确调用对象

问题描述

我的代码运行良好,直到我决定尝试将我的 Promise 链中的两个值返回到下一个函数。我可以调用其中一个值,但不能调用另一个。

我的代码看起来像这样

app.get('/projects', (req, res) => {
practice.screamIt('matt').then((name) => {
    return [practice.translateIt(name), name]; //puts name as the parameter for next function
}).then((translate) => {
    console.log(translate[1] + ' test occured here')
    console.log(translate[0][0].englishName)
    return [`The name you entered is ${translate[1]}`, `${translate[0].englishName} is ${translate[0].spanishName} in spanish`]
}).then((value)=>{

    res.render('projects', {
    pageTitle: "Projects Page",
    practice: practice,
    value1: value[0],
    value2: value[1]
});

}).catch((errorMessage)=>{
    console.log(errorMessage)
})

});

当我记录第一个数据时,它显示:

[ Promise { { englishName: 'Matt', spanishName: 'Mateo' } },'Matt' ]

我希望能够调用englishName,但如果没有得到未定义似乎就无法这样做。我需要能够调用 englishName 以便我的第二个函数按预期工作。

标签: javascriptnode.js

解决方案


您需要首先解决translateIt()承诺并使用另一个then()来创建数组

改变:

return [practice.translateIt(name), name];

return practice.translateIt(name).then(translate => [translate, name]);

推荐阅读