Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 量角器可以';无法从executescript获取值。它返回一个承诺_Angular_Typescript_Protractor - Fatal编程技术网

Angular 量角器可以';无法从executescript获取值。它返回一个承诺

Angular 量角器可以';无法从executescript获取值。它返回一个承诺,angular,typescript,protractor,Angular,Typescript,Protractor,在量角器中,我有这个 function getText(): string { return browser.executeScript(`return 'some text';`); } 第一个返回一个承诺,我不知道如何从承诺中获得价值 然后我试着去做 function getText(): string { browser.executeScript(`return 'some text';`).then(function(result) { return

在量角器中,我有这个

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。。。等待
履行承诺的机制:

async function getText(): Promise<string> {
  const text = browser.executeScript(`return 'some text';`);
  return text;
});

...
...

let text = await getText();

不能将异步调用转换为同步调用。只需返回一个承诺,并让方法的调用方处理返回的承诺。第二个示例似乎没有在browser.executeScript之前返回
return
。因此,函数应该返回executeScript返回的任何内容。否则它将始终是未定义的,不起作用@Sergey PleshakovI'm get Type“{}”不可分配给Type“string”。以及预期的声明或声明。你测试过自己的代码吗?
let text = getText();