【发布时间】:2017-04-24 09:52:36
【问题描述】:
我对在打字稿中使用“承诺”有疑问。我正在使用量角器和打字稿编写 e2e 测试框架,我想对数据库进行一些查询,以便使用检索到的数据来填写表格或进行验证。
我创建了一个新类“UserService”,其想法是使用一些静态方法来返回数据。我已经安装了 typeOrm 库来处理它。
问题是我找不到将“承诺”返回转换为“字符串”的方法。我该怎么做?
看一下代码:
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);
【问题讨论】:
-
你已经使用了两次,然后是 promise 的 then() 方法,在 promise 被解决后执行代码。在这里做同样的事情:
UserService.getUserName(1).then(name => txtUsername.Sendkeys(name)); -
确实不能。它是异步的,你必须等待它。
UserService.getUserName(1).then(name => txtUsername.Sendkeys(name)) -
只有静态方法的 JavaScript
class是非常糟糕的代码。 -
在国际英语中,我们说“问题”,而不是“怀疑”。
标签: parsing typescript promise protractor