首页 > 解决方案 > 量角器无法从执行脚本中获取价值,它返回一个承诺

问题描述

在量角器中,我有这个。

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.

标签: angulartypescriptprotractor

解决方案


您可以使用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();

推荐阅读