首页 > 解决方案 > 如何从异步函数返回多个结果?

问题描述

我有这个功能:

const memberdata = async function() {
     const name = await doquery('name','members','id',userid);
     return (name);
    };

memberdata().then(v => {
     
    username = v[0].name; //returns John, etc.
}

现在我想增加这样的常量数量:

const memberdata = async function() {
     const name = await doquery('name','members','id',userid);
     const sex = await doquery('sex','members','id',userid);
     const age = await doquery('age','members','id',userid);

但从现在开始,我得到了多个结果,而不仅仅是一个。then 的语法如何?

memberdata().then(v => {
    username = v[0].name; //returns John, etc.
    usersex = v[0].sex; //returns male, etc.
    userage = v[0].age; //returns 24, etc.
}

标签: node.jsasync-await

解决方案


您需要一个对象来保存这些,然后返回该对象。如果您有多个数组,就像您的示例所暗示的那样,那么您可以拥有一个对象数组。像这样的东西:

const memberdata = async function() {
     const name = await doquery('name','members','id',userid);
     const sex = await doquery('sex','members','id',userid);
     const age = await doquery('age','members','id',userid);
     const returnObject = {name: name, sex: sex, age: age};
     // loop here and push onto an array if needed.
     return returnObject;

推荐阅读