Я дал обещание в 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.info)
Вы экспортируете обещание напрямую, а не функцию. Вероятно, вы хотели сделать это:
exports.pickRandomSubscription = () => new Promise(function(resolve,reject) { ... }
Покажите нам, как вы импортируете pickRandomSubscription
.
Вы импортировали неправильное имя промиса: pickedRandomSubscription
const { pickedRandomSubscription } = require("../algo/pickSubscription");
Вы должны исправить это на: pickRandomSubscription
(не ed
)
const { pickRandomSubscription } = require("../algo/pickSubscription");
это не сработало @eol. снова та же ошибка «не является функцией».