我做出了承诺,node.js
并尝试在控制器中使用它。但这引发了一个错误'not a function'
。没有小括号的诺言引发了错误'Can't call then on undefined'
。
承诺代码:
const Subscription = require("../models/subscription");
exports.pickRandomSubscription = new Promise(function(resolve, reject) {
let pickedSubscription = '';
Subscription.find({}, function(err, subscriptions) {
subscriptions.forEach(function(item) {
pickedSubscription = item; //get last subscription
});
if (pickedSubscription) resolve(pickedSubscription);
else reject("Subscription not found");
});
})
承诺的呼吁:
const { pickedRandomSubscription } = require("../algo/pickSubscription");
let pickedSubscription = '';
pickedRandomSubscription().then(res => pickedSubscription = res).catch(console.log)
您正在直接输出承诺,而不是功能。您可能想这样做:
exports.pickRandomSubscription = () => new Promise(function(resolve,reject) { ... }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句