開発スタイルに合わせて調整しながら、ノードビギナーチュートリアルを進めています。たとえば、私はcoffeescriptとrequirejsを使用することを選択しています。後者は、かなりの定期的な量に加えて、大量のコールバックスープを含みます。通常、これらは私がプロミスを使用して対処したい状況です。いくつかの最小限の研究の約束の後-ioは合理的な解決策のようです。それは機能しますが、突然、すべてを使用してpromiseを組み合わせる際に問題が発生します(これはjQuery.whenに類似しているようです-これは私が頻繁に使用する手法です)。
以下は私のserver.coffeeファイルです。all
完全に機能するため、ネストされた遅延を呼び出しに置き換えると、 1つの要求が処理され、サーバーがハングします。誰かが問題が何であるかを知っていますか?
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