gpt4 book ai didi

javascript - 如何在返回值之前等待 Cypress then() 命令完成?

转载 作者:行者123 更新时间:2023-12-05 01:57:34 27 4
gpt4 key购买 nike

我试图在 .then() 命令中设置一个变量,该命令是在它外部声明的,并且在整个 block 完成后(.then())我返回该值。

问题是,当我返回值时,变量未定义,但在 .then() block 中,变量被加载。

示例代码如下:

public getValueFromElement(): string {
cy.log("Obtaining the Value");

let myNumber: string; // Here I'm declaring my variable

cy.get(this.labelWithText).then(($element) => {

let originalLabelText: string = $element.text();
let splittedText: string[];
splittedText = originalLabelText.split(": ");

myNumber = splittedText[1]; // Here I'm assigning the value
cy.log("Inside the THEN" + myNumber); //This logs the number correctly

});

return myNumber; // But after I return it using the function, the value is `undefined`!
}

我假设这可能与异步/同步问题有关,因为调用函数时会立即执行 return 语句,并且 .then 创建的 promise () 仍在运行,但我不知道如何解决此问题。

你知道我如何等待 .then() 先完成然后返回值吗?

谢谢!!

最佳答案

你说“问题是,当我返回值时,变量是未定义的”。

那是因为 return myNumber 行在 cy.get(this.labelWithText).then(($element ) => { 完成,因为命令异步运行。

您需要返回命令本身,并且从 .then() 内部返回派生的 myNumber

public getValueFromElement(): Chainable<string> {  // cannot return the raw string 
cy.log("Obtaining the Value");

return cy.get(this.labelWithText).then(($element) => {
...
const myNumber = splittedText[1];
cy.log("Inside the THEN " + myNumber)

return myNumber
})
}

这样使用

getValueFromElement().then(myNumber => {
cy.log("Outside the function " + myNumber)
})

关于javascript - 如何在返回值之前等待 Cypress then() 命令完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69138981/

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