Parsing 如何转换;“承诺”;至;“字符串”;在静态方法中[ts]

Parsing 如何转换;“承诺”;至;“字符串”;在静态方法中[ts],parsing,typescript,promise,protractor,Parsing,Typescript,Promise,Protractor,我对在打字稿中使用“承诺”表示怀疑。我正在用量角器和typescript编写e2e测试框架,我想对数据库进行一些查询,以便使用检索到的数据填写表单或进行验证 我创建了一个新类“UserService”,其思想是使用一些静态方法来返回数据。我已经安装了TypeForm库来处理它 问题是我无法找到将“承诺”返回转换为“字符串”的方法。我怎么做 请看一下代码: import "reflect-metadata"; import { User } from "././entities/user"; im

我对在打字稿中使用“承诺”表示怀疑。我正在用量角器和typescript编写e2e测试框架,我想对数据库进行一些查询,以便使用检索到的数据填写表单或进行验证

我创建了一个新类“UserService”,其思想是使用一些静态方法来返回数据。我已经安装了TypeForm库来处理它

问题是我无法找到将“承诺”返回转换为“字符串”的方法。我怎么做

请看一下代码:

import "reflect-metadata";
import { User } from "././entities/user";
import { ConnectionOptions, Connection, Driver, createConnection } from "typeorm";

const connectionOptions: ConnectionOptions = {
    driver: {
        type: "mysql",
        host: "localhost",
        port: 3306,
        username: "root",
        password: "admin123",
        database: "user"
    },
    entities: [User],
    autoSchemaSync: false
};

export class UserService {

    static getUserName(userId:number): string {

        let us = createConnection(connectionOptions).then(connection => { 
            return connection.getRepository(User).findOne({Id: userId})
        }).then(user => user.name);

        return us;  //it return an Promise<string>.
    }
}
使用等待/异步:

let name = await UserService.getUserName(1);
txtUsername.Sendkeys(name);
这必须在一个定义为async的函数中,您可能希望用try/catch来包围它,而且它不会是同步的,但这是访问它的最简单方法


对承诺毫无疑问。。。它们非常棒。

您已经在使用promise的两次then()方法,在promise得到解决后执行代码。在这里执行相同的操作:
UserService.getUserName(1)。然后(name=>txtUsername.Sendkeys(name))确实不能。它是异步的,您必须等待它
UserService.getUserName(1)。然后(name=>txtUsername.Sendkeys(name))
一个只有静态方法的JavaScript
类是非常糟糕的代码。在国际英语中,我们说的是“问题”,而不是“怀疑”。
let name = await UserService.getUserName(1);
txtUsername.Sendkeys(name);