Javascript 函数中的行在promis.all之后不执行

Javascript 函数中的行在promis.all之后不执行,javascript,promise,Javascript,Promise,我正在调试我的代码,由于某种原因,代码执行在将promise.all赋值给变量后停止,它不会执行下面的行。我也会遇到一些错误,比如 (节点:5)未处理的Promisejection警告:未处理的承诺拒绝(拒绝id:17):未定义 虽然我不确定这是否相关 它打印第一个console.log,但不打印最后一个或介于两者之间的任何内容 这里是有问题的部分 console.log('this prints'); result = promise.all([dbinfo, vaultinfo]) .th

我正在调试我的代码,由于某种原因,代码执行在将promise.all赋值给变量后停止,它不会执行下面的行。我也会遇到一些错误,比如

(节点:5)未处理的Promisejection警告:未处理的承诺拒绝(拒绝id:17):未定义

虽然我不确定这是否相关

它打印第一个console.log,但不打印最后一个或介于两者之间的任何内容

这里是有问题的部分

console.log('this prints');

result = promise.all([dbinfo, vaultinfo])
.then(array =>{
    console.log('recieved all info');
    [dbinfo, vaultinfo] = array;
    mark(id);
    info = {
        id: id,
        username: dbinfo.username,
        country: dbinfo.country,
        firstname: vaultinfo.firstname,
        lastname: vaultinfo.lastname,
        email: vaultinfo.email
    };
    console.log('logging final info :' , info);
    return ( info );
})

.catch( (e) => {
    console.log('somethingwent wrong');
    console.error(e.message);
    return Promise.reject('Error');
    });

console.log('this doesnt');

console.log('final results', {result});

return result;
这是完整的代码

let central=require('./central'),
db1=require('./db1'),
db2=require('./db2'),
db3=需要('./db3'),
保险库=需要(“./保险库”),
标记=要求('./标记');
module.exports=函数(id){
//待办事项
//提醒:截止日期是明天!
//查找数据库、用户名和国家/地区
var dbinfo=central(id);
信息实用程序
。然后(数据=>{
console.log({data});
返回数据;
})
.catch(()=>{
log('dbinfo解析问题:');
返回承诺。拒绝(“错误中心”);
})
。然后(dbname=>{
log('checkingfordb');
开关(dbname){
案例“db1”:var db=db1(id);中断;
案例'db2':var db=db2(id);break;
案例“db3”:var db=db3(id);中断;
违约:
log('error db not in file');
错误('数据库不在文件中');
}
db//是一个承诺,如果拒绝返回名称
.catch(()=>{
log(dbname+‘数据库返回错误’);
抛出'Error'+dbname;
})
log('db found,at'+dbname,db);
返回分贝;
})
vault信息=vault(id);
保险库信息
.catch(()=>{return Promise.reject('Error vault')});
console.log('this prints');
结果=promise.all([dbinfo,vaultinfo])
。然后(数组=>{
console.log('received all info');
[dbinfo,vaultinfo]=数组;
标记(id);
信息={
id:id,
用户名:dbinfo.username,
国家:dbinfo.country,
firstname:vaultinfo.firstname,
lastname:vaultinfo.lastname,
电子邮件:vaultinfo.email
};
log('logging final info:',info);
返回(信息);
})
.catch((e)=>{
log('something出错');
控制台错误(e.message);
返回承诺。拒绝(“错误”);
});
log('this doesnt');
log('final results',{result});
返回结果;

};
你不能只做
result=Promise.all()
,你需要使用
wait
,例如

const result = await Promise.all()...
或者继续把承诺拴在一起-

Promise.all(...).then((result) => { /* ...do something with result */ })

你不能只做
result=Promise.all()
,你需要使用
wait
,例如

const result = await Promise.all()...
或者继续把承诺拴在一起-

Promise.all(...).then((result) => { /* ...do something with result */ })

您可以使用asyc/await,也可以使用then,但在敏感的情况下要注意写承诺,它是“Promise.all()”而不是Promise.all()


您可以使用asyc/await,也可以使用then,但在敏感的情况下要注意写承诺,它是“Promise.all()”而不是Promise.all()


对不起,你这是什么意思,我对承诺不熟悉。Wouldnt
result=Promise.all()
返回与wait
相同的值,因为它们都返回一个Promise
?或者,在返回带有挂起的承诺对象的结果之前,是否会执行没有等待的
的结果?请将承诺想象为一个桶,它最终将包含您可以取出并使用的东西
Promise.all()
返回承诺,但其中没有任何内容,它是空桶,尚未解决(或拒绝)
await
(或
then()
)是您等待和解包结果的方式,即您的存储桶中现在有一个值,您可以使用它。“Wouldnt result=Promise.all()返回与
await
相同的值,因为它们都返回一个承诺?”-不,
Promise.all()
返回一个承诺,
wait
解压已解决承诺的价值对不起,你这是什么意思,我不熟悉承诺。Wouldnt
result=Promise.all()
返回与wait
相同的值,因为它们都返回一个Promise
?或者,在返回带有挂起的承诺对象的结果之前,是否会执行没有等待的
的结果?请将承诺想象为一个桶,它最终将包含您可以取出并使用的东西
Promise.all()
返回承诺,但其中没有任何内容,它是空桶,尚未解决(或拒绝)
await
(或
then()
)是您等待和解包结果的方式,即您的存储桶中现在有一个值,您可以使用它。“Wouldnt result=Promise.all()返回与
await
相同的值,因为它们都返回一个承诺?”-不,
Promise.all()
返回一个承诺,
wait
解压缩已解析承诺的值