У меня есть установка промежуточного программного обеспечения в узле для выполнения задачи и вызова после успеха или неудачи. Задача вызывается после запуска начального блока обещаний. Это называется в .then функции:Узел, передающий параметры через Q сервисное обещание
var Q = require('q');
var dataPromise = getCustomerId();
dataPromise
.then(function(data) {
getGUID(req, res, next);
}, function(error) {
console.log('Failure...', error);
});
};
Сервер висит, хотя, потому что (REQ, Рез, следующий) параметры все неопределенными, когда в контексте .then функции.
Вот функция getCustomerId:
var getCustomerId = function() {
var getCustomerIdOptions = {
options...
};
var deferred = Q.defer();
request(getCustomerIdOptions, function(err,resp,body){
if(err){
deferred.reject(err);
console.log(err);
return;
}else{
deferred.resolve(body);
}
});
return deferred.promise;
};
Что бы правильный способ передать эти параметры в функции, называемой в .then блоке?
EDIT: Параметры (req, res, next) от внешней функции и доступны, когда getGUID (req, res, next) вызывается за пределами блока .then().
var assureGUID = function(req, res, next) {
if(app.locals.guid){
next();
return;
}
var dataPromise = getCustomerId();
dataPromise
.then(function(data) {
getGUID(req, res, next)
}, function(error) {
console.log('Failure...', error);
}).;
};
Не могли бы вы показать нам, откуда взялись эти аргументы? Скорее всего, вам не хватает всей функции обертывания, которая зарегистрирована в среде промежуточного программного обеспечения, которая должна их предоставить. –
Я добавил свою внешнюю функцию, которая имеет доступные параметры. – byrdr
- экспресс-приложение? –