【问题标题】:Protractor - How to resolve the promise to get number output量角器 - 如何解决获得数字输出的承诺
【发布时间】:2020-01-18 11:05:12
【问题描述】:

我的助手类中有以下方法。我需要返回 Number 类型的 rowNum 的方法。但是当我调用该方法时,我总是得到一个 Promise。我想在调用方法时看到数字。

getRowNum(table, colNum, searchText) {
        let rowNum = -1;

        return table.all(by.css("tbody tr td:nth-child(" + colNum + ")")).map(function (element) {
            return element.getText();
        }).then(function (textArray) {
            for (var i in textArray) {
                if (textArray[i].trim().indexOf(searchText) != -1) {
                    console.log(i);
                    console.log(textArray[i]);
                    rowNum = i + 1;
                }
            }
            return rowNum;
        });
});

//I'm using it in my other js file like this
let rowNum = helper.getRowNum($("div.sponsor-table table"), 2, "some text");

【问题讨论】:

  • 因为你让函数 getRowNum() 返回了一个承诺。所以let rowNum= 也是承诺。您需要在 'then()' 中获得承诺的最终价值,例如 rowNum.then(function(val){ console.log('row num:', val) })
  • 糟糕,我的错。我没有意识到。可能是我多年的 Java 经验。
  • @yong,您的代码实际上打印了正确的值,但是如果我将值分配给一个变量,在我的例子中为 rowNum,它会得到一个 Promise 而不是数字。如何正确地将值分配给变量?
  • 可以考虑使用async/awaitprotractortest.org/#/async-await

标签: protractor


【解决方案1】:

你试过了吗?

    getRowNum = (table, colNum, searchText) => {
        let rowNum = -1;
        let text;
        table.all(by.css("tbody tr td:nth-child(" + colNum + ")")).map(function (element) {
            return text = element.getText();
        })
        .then(function () {
            for (var i in text) {
                if (text[i].trim().indexOf(searchText) != -1) {
                    console.log(i);
                    console.log(text[i]);
                    rowNum = i + 1;
                    break;
                }
            }
            return rowNum;
        });
    };

让我知道它是否有效

【讨论】:

  • 感谢您的回答;尽管我能够获得预期的输出,但我的问题是,在将方法的返回输出分配给变量之后,变量具有承诺而不是实际值。我需要一种方法来解决承诺并获得价值。
猜你喜欢
  • 2021-12-14
  • 2019-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-29
  • 2018-10-16
  • 2017-03-05
相关资源
最近更新 更多