2012-10-29 4 views
0

Node Beginner Tutorial을 통해 내 개발 방식으로 작업 할 수 있도록 작업하고 있습니다. 예를 들어 coffeescript 및 requirejs를 사용하도록 선택합니다. 나중에 상당한 양의 콜백 - 수프가 상당한 양의 정상에 올랐습니다. 일반적으로 약속을 사용하는 것을 좋아합니다. 몇 가지 최소 연구 후 promise-io은 합리적인 해결책처럼 보입니다. 그것은 작동하지만 갑자기 모든 것을 사용하여 약속을 결합하는 문제에 직면하고 있습니다 (jQuery와 유사합니다 - 언제 이것이 자주 사용하는 기술인지).노드 약속 - io - 왜 충돌이 발생합니까?

다음은 내 server.coffee 파일입니다. 완벽하게 작동하므로 중첩 지연을 all 호출로 바꾸면 하나의 요청이 처리되어 서버가 중단됩니다. 누구든지 문제가 뭔지 알 수 있습니까? 그것을 실행하는 두 번째 시간, 당신은 완전히 다른 값을 가지게됩니다

exports.start = -> 
    requirejs ['http', 'url', './route'], (http, url, route)-> 
     console.log "Starting server" 
     server = http.createServer (request, response) -> 
      pathdata = url.parse request.url 

      ### 
      #this breaks 
      promise.all(readingPost(request), route.promise).then (x) -> 
       [postData, route] = x 
       route pathdata, response, postData 
      ### 
      #this works 
      readingPost(request).then (postData) -> route.promise.then (route) -> 
       route pathdata, response, postData 

     server.listen 8888 

readingPost = (request) -> 
    request.setEncoding 'utf-8' 
    data = '' 
    request.addListener 'data', (dataChunk) -> 
     data += dataChunk 
    d = promise.Deferred() 
    request.addListener 'end', -> d.resolve data 
    d 

답변

1

언뜻 보면, 첫 번째 예를 들어, 당신은 requirejs와 함께로드 route을 덮어 쓰게됩니다.

[postData, routeCb] = x 
routeCb pathdata, response, postData 
+0

오 당신이 절대적으로 정확한지에

[postData, route] = x route pathdata, response, postData 

변경해보십시오! 필자는 속성을 사용하지 않고 단일 값을 직접 내보내는 방법을 알아야합니다. –

관련 문제