【发布时间】:2017-01-09 22:45:19
【问题描述】:
我正在创建一个新的 Promise(类中唯一返回 Promise 的方法)
return new Promise(function(resolve, reject) {
... mongo DB call
if ( err ) {reject(err)}
if ( data ) {resolve(data)}
})
当我返回这个时,我可以在一个地方把它当作一个承诺来阅读并使用
promise.then(..)
但是,当我尝试在另一个类中做同样的事情时(它在两个类的第一行),我收到一个错误,如下所示,
[TypeError: Cannot read property 'then' of undefined]
有没有人遇到过类似的问题?
编辑:按照建议,这是实际代码 -
module.exports = {
populateDashboard: function ( req, callback ) {
var userInfo = {userName: 'Business User1', role: 'business'};
console.log ('userInfo - ', userInfo); // Getting this value, obviously!
var promise1 = roleAccessRepository.getUserRoleAccess (userInfo.role);
promise1.then (
function(data) {
}
).catch(
function(err) {
console.log('error', err); // Error getting caught here
}
)}
}
module.exports = {
fetchCampaignInfo: this.fetchCampaignInfo,
}
fetchCampaignInfo = function ( role, userName, sectionName, callback ) {
var campaignList = [];
var promiseArray = [];
var promise1 = roleAccessRepository.getUserRoleAccess (role);
promise1.then (
onRoleSuccess = function ( data ) {
// This goes through fine
}
).catch(
function(err) {
console.log('error', err);
}
)}
}
module.exports = {
getUserRoleAccess: function ( role ) {
return new Promise (
function ( resolve, reject ) {
var roleAccess = mongoose.model ('roleAccess', userAccessRole);
roleAccess.find ({role: role}, function ( err, data ) {
if ( err ) {
console.log ('getUserRoleAccess - error', err);
reject (err);
}
console.log ('getUserRoleAccess - Data', JSON.stringify(data));
resolve (data);
});
});
}
}
【问题讨论】:
-
您的代码显然有问题。承诺不会像你描述的那样做。因此,我们可以帮助您的唯一方法是让您向我们展示有问题的代码。这可能是您如何使用返回的承诺的问题。并且,请向我们展示真实代码,而不是编辑或伪代码(就像您现在的答案一样)。问题是您的实际代码中的一个细节,因此我们可以准确帮助您的唯一方法是查看实际代码的相关部分。
-
由于您在这里可能有点新手,这个网站是关于解决实际代码中的问题。我们在没有显示相关代码的理论问题上做得非常糟糕。这需要我们提出很多问题和猜测,这既是超级低效的,而且往往只是试图找到答案的一种无效方式。但是,如果您向我们展示您的实际代码,我们通常可以提供一个相当快速且非常具体的答案来准确解决问题。
-
就像你说的,我是 Angular 和 StackOverflow 的新手。而且我还觉得这可能是一个很容易让人联想到的常见问题。反正我已经更新了上面的代码。
-
第一次写问题的时候一定要把相关代码贴在这里。您能否更具体地说明您的代码中有问题的确切位置?仅供参考,在调用
reject(err)之后,您应该从回调中return或在if上使用else,这样后面的其他代码就不会运行。这不是您的问题的原因,但它肯定会让您感到困惑。 -
此行是无效代码:
fetchCampaignInfo = function (role, userName, sectionName, callback) {它位于对象定义中的位置。您是否在问题的副本中弄乱了一些东西?或者这是您代码中的实际语法错误?
标签: angular promise angular-promise