gpt4 book ai didi

javascript - async/await 总是返回未定义

转载 作者:行者123 更新时间:2023-12-03 00:16:45 25 4
gpt4 key购买 nike

在我的 Protractor 应用程序中,我有以下方法,该方法应该返回 bool 值,具体取决于它是否找到元素。

async getTheValueOfEntery(entery: string) {
var value = await element(by.xpath(entery))
.isPresent().then((isExist) => {
isExist;
});
return value;
}

但是,问题是,它总是返回 undefined,尽管我确信它应该返回 true

那么,我的方法有什么问题吗?

<小时/>

更新:

确实,我需要有一个调用链,胖函数,所以我的函数的最完整版本如下:

async getTheValueOfEntery(entery: string) {

var value = await element(by.xpath(entery))
.isPresent().then((isExist, entery: string) => {
isExist ? element(by.xpath(entery)).getText() : 0;
});

return value;
}

但是,我无法将 entery:string 传递给第二个 lambda。

最佳答案

你的箭头函数没有返回任何内容,所以它的结果是 undefined 。如果你写:

.isPresent().then((isExist, entery: string) => {
isExist ? element(by.xpath(entery)).getText() : 0;
});

那么就好像你会写:

.isPresent().then(function (isExist, entery: string) {
isExist ? element(by.xpath(entery)).getText() : 0;
});

所以你需要添加一个return :

.isPresent().then((isExist, entery: string) => {
return isExist ? element(by.xpath(entery)).getText() : 0;
});

或者删除 {} :

.isPresent().then((isExist, entery: string) => isExist ? element(by.xpath(entery)).getText() : 0);

如果你不对value做任何事情变量除了返回它之外,那么你不需要使用 await 。你可以这样写:

async getTheValueOfEntery(entery: string) {

return element(by.xpath(entery))
.isPresent().then((isExist, entery: string) => {
isExist ? element(by.xpath(entery)).getText() : 0;
});
}

async那么理论上也不需要,但这没有坏处,并且会表明该函数将始终返回一个 Promise。

关于javascript - async/await 总是返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54502201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com