[英]TypeError: SomeFunction is not a function (using Mongoose)
[英]TypeError: someobject.somefunction(…).then is not a function
我創建了一個實用程序函數,用於使用量角器和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
代碼失敗的原因是因為您在不返回promise
的函數上使用.then()
。
這是一個可行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);
})
您可以在代碼中使用它來返回resolve
或reject
,然后就可以使用.then()
。
https://medium.freecodecamp.org/promises-in-javascript-explained-277b98850de
您需要更正方法以正確處理承諾。
我假設tableElement.all(rowSelector).count()返回一個Promise,否則您將不得不處理回調。
this.getTableSize = function (tableElement, rowSelector, columnSelector) { return Promise.all([tableElement.all(rowSelector).count(), tableElement.all(columnSelector).count()]).then(function(data) { return { row: data[0], column: data[1] } }) }; tableActions.getTableSize(table, by.css("tr"), by.css("th")).then(function (obj) { console.log(obj); })
Promise.all不會使用bluebird的承諾返回已解析數據的數組,因此請使用。
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); })
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.