使用 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 任何东西。