我在node.js中做了一个承诺,并尝试在控制器中使用它。但它抛出了一个错误,即'not a function'。并且调用没有小括号的promises抛出了一个错误'Can't call then on undefined'。
Promise代码:
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)发布于 2020-12-23 15:50:28
您将直接导出promise,而不是函数。你可能想这样做:
exports.pickRandomSubscription = () => new Promise(function(resolve,reject) { ... }发布于 2020-12-23 16:08:11
导入了错误的promise名称:pickedRandomSubscription
const { pickedRandomSubscription } = require("../algo/pickSubscription");您应该将其修复为:pickRandomSubscription (而不是ed)
const { pickRandomSubscription } = require("../algo/pickSubscription");https://stackoverflow.com/questions/65420665
复制相似问题