TypeError:someobject.somefunction(...)。then不是一个函数

时间:2019-03-23 16:36:28

标签: javascript protractor angular-promise

我创建了一个实用程序函数,用于使用量角器和JavaScript获取Web表的总大小。

this.getTableSize = function(tableElement, rowSelector, columnSelector){

        return {

            row: tableElement.all(rowSelector).count(),
            column : tableElement.all(columnSelector).count()
        }

    };

但是在使用相同功能时,我遇到了错误:

tableActions.getTableSize(table,by.css("tr"),by.css("th")).then(function(obj){
          console.log(obj);
      })

我得到的错误是:

 TypeError: tableActions.getTableSize(...).then is not a function

2 个答案:

答案 0 :(得分:0)

代码失败的原因是因为您在不返回.then()的函数上使用promise

以下是有效的promise的示例:

let promise1 = new Promise( (resolve, reject) => {
    let dataReceivedSuccessfully = false; 

    if (dataReceivedSuccessfully) {
        resolve('Data Available!'); 
    }
    if (!dataReceivedSuccessfully) {
        reject('Data Corrupted!'); 
    }
}) 

promise1.then( (success) => {
    console.log(success); 
}).catch( (err) => {
    console.log(err);
})

您可以在代码中使用它来返回resolvereject,然后您就可以使用.then()

  

https://medium.freecodecamp.org/promises-in-javascript-explained-277b98850de

答案 1 :(得分:0)

您需要更正方法以正确处理承诺。

我假设tableElement.all(rowSelector).count()返回一个promise,否则您将不得不处理回调;

this.getTableSize = function (tableElement, rowSelector, columnSelector) {
  return ableElement.all(rowSelector).count().then(function(c) {
    return ableElement.all(columnSelector).count().then(function (c2) {
      return {
        row: c,
        column: c2
      } 
    })
  })
};

tableActions.getTableSize(table, by.css("tr"), by.css("th")).then(function (obj) {
  console.log(obj);
})

Promise.all不返回带有bluebird promises的已解析数据数组,请使用。

#include <stdio.h>


int main() {

    int gg; //number which user inputs
    int dg = 0; //first number
    int next = 0;
    int n;
    int i;

    printf("Number of series: ");
    scanf("%d", &gg);

    printf("Positive integer: ");//max number which outputs in printf("Series: \n", gg), etc. 1000;
    scanf("%d", &n);

    printf("Series: \n", gg); //result

    for (i = 0; i < gg; i++) {
        printf("%d, ", i);
    }

    next = gg + dg;

    while(next <= n){
        printf("%d, ", next);
        dg = gg;
        gg = next;
        next = gg + dg;
    }

    return 0;
}