使用 Q 服务链接异步事件
Using Q service to chain asynchronous events
我了解 Q 服务的基础知识,但在实施时遇到问题。我有一系列事件,第二个取决于第一个返回。
承诺设置
var Q = require('q');
var dataPromise = getCustomerId();
dataPromise
.then(function(data) {
console.log('Success!', data);
getGUID(req, res, next);
}, function(error) {
console.log('Failure...', error);
});
};
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;
});
};
我想我正确地返回了延迟的承诺,但我返回了一个错误,dataPromise 没有 "then" 属性,它是未定义的。
您正在 returnrequest()
回调中的承诺。
实际的 getCustomerId()
函数没有 return 任何东西。
我了解 Q 服务的基础知识,但在实施时遇到问题。我有一系列事件,第二个取决于第一个返回。
承诺设置
var Q = require('q');
var dataPromise = getCustomerId();
dataPromise
.then(function(data) {
console.log('Success!', data);
getGUID(req, res, next);
}, function(error) {
console.log('Failure...', error);
});
};
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;
});
};
我想我正确地返回了延迟的承诺,但我返回了一个错误,dataPromise 没有 "then" 属性,它是未定义的。
您正在 returnrequest()
回调中的承诺。
实际的 getCustomerId()
函数没有 return 任何东西。