Javascript TypeError:someobject.somefunction(…)。则不是函数
我创建了一个实用函数,用于使用量角器和javascript获取webtable的总大小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
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的代码,非常感谢它现在正在使用另一个代码段。您能帮我理解问题?另外,你能给我发一个好的链接(如果可能的话)让我了解更多关于承诺的信息吗。非常感谢你的帮助:)谢谢你的帮助:)谢谢你的帮助:)