如何在静态方法中将“promises”转换为“string”[ts]

时间:2017-04-22 21:50:57

标签: parsing typescript promise protractor

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

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

问题是我找不到将“promise”转换为“字符串”的方法。我该怎么办?

看看代码:

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>.
    }
}

进入“step”类,上面的类将用作例如:

let name: string = UserService.getUserName(1);
txtUsername.Sendkeys(name);

1 个答案:

答案 0 :(得分:1)

使用await / async:

let name = await UserService.getUserName(1);
txtUsername.Sendkeys(name);

这必须在一个定义为async的函数中,你可能想用try / catch包围它,它不会是同步的,但这是访问它的最简单方法。

对承诺毫不怀疑......他们非常棒。