我了解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”属性,它是未定义的。

最佳答案

您将在request()回调中返回promise。

实际的getCustomerId()函数不返回任何内容。

关于javascript - 使用Q服务链接异步事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31948934/

10-12 01:01