无法从typescript中的异步方法返回值

无法从typescript中的异步方法返回值,typescript,async-await,protractor,Typescript,Async Await,Protractor,我正在处理typescript。我试图从async方法返回一个值。但是,它总是返回{}。下面是我的代码 async returnNewUrlAfterClickingLink(): Promise<string> { const allHandles = await browser.getAllWindowHandles(); await browser.switchTo().window(allHandles[2]); const cur_url =

我正在处理typescript。我试图从async方法返回一个值。但是,它总是返回{}。下面是我的代码

    async returnNewUrlAfterClickingLink(): Promise<string> {
    const allHandles = await browser.getAllWindowHandles();
    await browser.switchTo().window(allHandles[2]);
    const cur_url = await browser.getCurrentUrl();
    console.log("url is" + cur_url);
    return cur_url;
}
async returnNewUrlAfterClickingLink():承诺{
const allHandles=wait browser.getAllWindowHandles();
等待browser.switchTo().window(所有句柄[2]);
const cur_url=wait browser.getCurrentUrl();
log(“url为”+cur_url);
返回当前url;
}

但是,我能够正确记录url。

您的
返回新url单击链接后
标记为异步,因此它现在总是返回承诺。要获得此值,您需要等待此函数的结果:

const url = await returnNewUrlAfterClickingLink()
console.log(url)
同样,要使用wait,您的函数必须设置为异步,所以整个调用堆栈必须是异步的/wait


希望这有帮助

您是否订阅了该功能?你能在调用函数的地方发布代码吗?很抱歉,我没有发布调用函数。然而,Xotabu4回答了我的问题。我没有在调用函数中使用wait。谢谢everyone@Liam你是对的。对于那些意味着有
链的测试,那么
可能很难读写。所以我个人更喜欢把async/wait放在everywhere@Liam在webdriver测试中,99%的浏览器测试命令本质上是连续的,必须严格按照顺序运行。非同步代码几乎从未用于此类测试。啊,我没有注意到量角器标记