Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeError:someobject.somefunction(…)。则不是函数_Javascript_Protractor_Angular Promise - Fatal编程技术网

Javascript TypeError:someobject.somefunction(…)。则不是函数

Javascript TypeError:someobject.somefunction(…)。则不是函数,javascript,protractor,angular-promise,Javascript,Protractor,Angular Promise,我创建了一个实用函数,用于使用量角器和javascript获取webtable的总大小 this.getTableSize = function(tableElement, rowSelector, columnSelector){ return { row: tableElement.all(rowSelector).count(), column : tableElement.all(columnSelector).coun

我创建了一个实用函数,用于使用量角器和javascript获取webtable的总大小

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

代码失败的原因是您正在对不返回承诺的函数使用
.then()

下面是一个有效的
承诺的示例:

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);
})
您可以在代码中使用此选项返回
解析
拒绝
,然后就可以使用
.then()


代码失败的原因是您正在对不返回承诺的函数使用
.then()

下面是一个有效的
承诺的示例:

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);
})
您可以在代码中使用此选项返回
解析
拒绝
,然后就可以使用
.then()


你需要纠正你的方法来正确处理承诺

我假设tableElement.all(rowSelector.count()返回一个承诺,否则您将不得不处理回调;
this.getTableSize=函数(tableElement、rowSelector、columnSelector){
返回Promise.all([tableElement.all(rowSelector.count()、tableElement.all(columnSelector.count()))。然后返回(函数(数据){
返回{
行:数据[0],
栏目:数据[1]
}
})
};
tableActions.getTableSize(table,by.css(“tr”)、by.css(“th”))。然后(function(obj){
控制台日志(obj);

})
您需要纠正方法以正确处理承诺

我假设tableElement.all(rowSelector.count()返回一个承诺,否则您将不得不处理回调;
this.getTableSize=函数(tableElement、rowSelector、columnSelector){
返回Promise.all([tableElement.all(rowSelector.count()、tableElement.all(columnSelector.count()))。然后返回(函数(数据){
返回{
行:数据[0],
栏目:数据[1]
}
})
};
tableActions.getTableSize(table,by.css(“tr”)、by.css(“th”))。然后(function(obj){
控制台日志(obj);

})
为什么要调用
然后对结果执行
?它不返回承诺。因为它不返回承诺人为什么要调用
然后对结果调用
?它不返回承诺。因为它不返回承诺,所以yes tableElement.all(rowSelector).count()返回承诺。我以
this.getTableSize=function(tableElement,rowSelector,columnSelector){return Promise.all(tableElement.all(rowSelector).count(),tableElement.all(columnSelector.count())的形式运行下面的代码。然后(函数(数据){return row:data[0],column:data[1]})。catch(函数(原因){console.log(reason);};
。现在给出的错误是:TypeError:[对象]是不是不合适,而且obj出来是不确定的?你敢用蓝鸟承诺还是本地的@ashishchauhan@ashishchauhan如果是,请使用另一个代码段。我的坏消息一定是一系列承诺,更新了第一个代码段@ashishchauhanHi的代码,非常感谢它现在正在使用另一个代码段。您能帮我理解问题?另外,你能给我一个好的链接(如果可能的话)让我了解更多关于承诺的信息吗?非常感谢你的帮助:)嗨,是的tableElement.all(rowSelector).count()返回承诺。我以
this.getTableSize=函数(tableElement,rowSelector,columnSelector){返回承诺.all(tableElement.all)的形式运行下面的代码然后(函数(数据){return{row:data[0],column:data[1]}})。catch(函数(reason){console.log(reason);})};
,现在给出的错误是:TypeError:[对象]是不是不合适,而且obj出来是不确定的?你敢用蓝鸟承诺还是本地的@ashishchauhan@ashishchauhan如果是,请使用另一个代码段。我的坏消息一定是一系列承诺,更新了第一个代码段@ashishchauhanHi的代码,非常感谢它现在正在使用另一个代码段。您能帮我理解问题?另外,你能给我发一个好的链接(如果可能的话)让我了解更多关于承诺的信息吗。非常感谢你的帮助:)谢谢你的帮助:)谢谢你的帮助:)