Typescript 将异步函数结果分配给变量的类型脚本 我有一个问题,我知道那里有一个非常类似的问题。我也尝试了他们的建议。但我不能解决我的问题,所以我现在就去问。 首先,由于我的打字脚本版本,顶层等待无法工作。请不要建议

Typescript 将异步函数结果分配给变量的类型脚本 我有一个问题,我知道那里有一个非常类似的问题。我也尝试了他们的建议。但我不能解决我的问题,所以我现在就去问。 首先,由于我的打字脚本版本,顶层等待无法工作。请不要建议,typescript,asynchronous,promise,typeorm,Typescript,Asynchronous,Promise,Typeorm,我正试图根据数据库记录设置对象的字段。我将检查我的对象的最后10分钟记录,如果它们相同,我将设置一个字段IsName=true,否则IsName=false。我将它们写入一个.txt文件,效果很好。但我不想创建长txt文件,所以我将使用db记录来创建它。 创建对象后,我将对象发送给客户端。 我在ts文件中设置对象字段,就像设置伪代码一样: object.id = 3; object.prm = 5; object.isSame = checkSame(); //checkSame is my f

我正试图根据数据库记录设置对象的字段。我将检查我的对象的最后10分钟记录,如果它们相同,我将设置一个字段IsName=true,否则IsName=false。我将它们写入一个.txt文件,效果很好。但我不想创建长txt文件,所以我将使用db记录来创建它。
创建对象后,我将对象发送给客户端。 我在ts文件中设置对象字段,就像设置伪代码一样:

object.id = 3;
object.prm = 5;
object.isSame = checkSame(); //checkSame is my function which decide whether true or not with log file
sendToClient(object);
但当我转换它时,db读取是异步函数。所以我的变量总是未定义的。为了显示我的问题,我创建了一个具有相同问题的虚拟项目。
这是main.ts行:

myObject.type = 0;
var persons = readDb("test");
myObject.persons = persons;
这是数据库中的函数:

export function readDb(personName: string) {
    getConnection().connect().then(connection => {connection.getRepository(Person).find({name: personName})
        .then(persons => {
            console.log(persons);
            return persons;
        }
        )});
}
如果我这样做,我可以在readDb函数中获取人员,但不能在主程序流中获取人员。我需要主程序流中的返回值。 我试过:

但这个人仍然是空的。我该怎么做?我需要在主程序流上分配我的变量。我已经在异步函数中访问了它,但无法返回它。(我尝试返回Person[],任何等。结果仍然相同)
如何在主程序的流中获取异步函数返回值以将其分配给变量?

您的
readDb
函数不返回任何内容。您
等待它返回
未定义的
。这应该可以做到:

导出函数readDb(personName:string){
返回getConnection().connect()
。然后(连接=>{
connection.getRepository(Person.find({name:personName})
.然后(人=>{
控制台日志(人)
返回人员
})
})
}
或使用异步/等待样式:

导出异步函数readDb(personName:string){
const connection=wait getConnection().connect()
const persons=await connection.getRepository(Person).find({name:personName})
控制台日志(人)
返回人员
}

据我所知,您没有返回任何来自
readDb
的承诺,实际上正如我所说的“我尝试返回Person[],any等。”但我在写问题时错过了它。我编辑了我的问题。事实上,正如我所说的“我尝试返回人[],任何其他人”,但我在写问题时错过了它。我编辑了我的问题。我也试过你的代码,但都是一样的。我在控制台中看到“null”。
var persons = null;
async function test() {
    const result = await readDb("java");
    persons = result;
  }

console.log(persons);