angular - 量角器无法从执行脚本中获取价值,它返回一个承诺
问题描述
在量角器中,我有这个。
function getText(): string {
return browser.executeScript(`return 'some text';`);
}
第一个返回一个承诺,我不知道如何从承诺中获取价值。
然后我试着做
function getText(): string {
browser.executeScript(`return 'some text';`).then(function(result) {
return result;
});
第二个的问题是我找不到使它异步的方法。它仅在我的所有代码执行完毕后才返回。
我想要实现的目标是:
let text = getText();
希望有人可以提供帮助,因为我找不到这个问题的有效答案。
编辑:我找不到将它放在函数外的变量中的方法。我目前的解决方案是:
browser.executeScript(`return 'some text';`).then(function(result) {
console.log(result);
//do your stuff here with the variable.
});
//can't find out how to use it outside the then function as other code runs first. But for now, that way works.
解决方案
您可以使用async ... await
机制来处理承诺:
async function getText(): Promise<string> {
const text = browser.executeScript(`return 'some text';`);
return text;
});
...
...
let text = await getText();
如果你不想在你的getText
方法完成时等待(我不知道你为什么需要这个奇怪的东西)你不能解决 Promise:
let text = getText();
推荐阅读
- reactjs - react-dnd 丢弃失败状态
- boolean - 如何在 Coq 中编写布尔比较函数
- javascript - 通过 javascript 接收 Carrierwave URL
- arduino-uno - 可以用 Arduino Uno 转换的最大频率?
- swift - swift中的Coredata NSpredicate谓词日期
- javascript - 什么是最简单的访问方法
- 一个被点击的元素是通过 jQuery 吗?
- javascript - 如何根据搜索结果创建网站端点?
- python - 将行附加到文件并覆盖 - python
- jpa - 为什么在使用实体图查询将加载我的惰性属性之前,我必须从 EclipseLink 共享缓存中逐出我的实体?
- xamarin.android - Xamarin.Android:当我以编程方式创建按钮时,为什么它有边距?