2016-07-15 3 views
0
exports.getOrder = function(id) { 
    return getCache(id) 
     .then(function(cache) { 
      return [ 
       getCustomer(cache.customer), 
       getInfo(cache.customer) 
      ]; 
     }) 
     .spread(mergeData) 
} 

function mergeData(a, b) { 
    return a; 
} 

확산을 사용하여 형식 오류가 발생하는 이유는 무엇입니까? 두 함수 (getCustomer, getInfo)는 Q.Promise을 반환합니다.Q spread TypeError : 정의되지 않은 함수가 아닙니다.

편집 : 나는 또한 성공과 같은 결과없이이 방법을 테스트 한

exports.getOrder = function(id) { 
    return getCache(id) 
     .then(function(cache) { 
      return Q.all([getCustomer(cache.customer),getInfo(cache.customer)]); 
     }) 
     .spread(mergeAuditData) 
} 

.

Edit2가 :

exports.getOrder = function(id) { 
    return getCache(id) 
     .then(function(cache) { 
      return Q.all([ 
       getCustomer(cache.customer), 
       getInfo(cache.customer) 
      ]); 
     }) 
     .then(function(a) { 
      return a // contains: [[result Customer], [result Info]] 
     }) 
     .catch(function(err) { 
      console.log(err); 
     }) 
} 

EDIT3 :

exports.getOrder = function(id) { 
    return getCache(id) 
     .then(function(cache) { 
      return [ 
       getCustomer(cache.customer), 
       getInfo(cache.customer) 
      ]; 
     }) 
     .spread(function(a,b) { 
      console.log(a); 
      console.log(b); 
      return a 
     }) 
     .catch(function(err) { 
      console.log(err); 
     }) 
} 

Edit4 :

function getCache(id) { 
    return Cache.findOne({id:id}); 
} 

Edit5 :

function getCache(id) { 
    var query = Cache.findOne({id:id}); 
    return query.exec(); 

    //return Q(11061); 
} 

답변

0

하지만 테스트 해보지 않았으므로 코드를 사용해보십시오.

module.exports.getOrder = function(id) { 
return getCache(id) 
    .then(function(cache) { 
     return [ 
      getCustomer(cache.customer), 
      getInfo(cache.customer) 
     ]; 
    }) 
    .spread(function(a,b) { 
     console.log(a); 
     console.log(b); 
     return a 
    }) 
    .catch(function(err) { 
     console.log(err); 
    }) 
} 
+0

다른 솔루션으로 첫 번째 게시물을 편집했습니다. 나는 너를 시험하고 약간의 피드백을 줄 것이다. – robert

+0

은 ES6의 문제입니까? –

+0

흥미 롭습니다 ...'a'에서 두 결과가 모두 나오고 'b'가 정의되지 않습니다. – robert