我正在学习Node Beginner Tutorial,同时根据我的开发风格定制一些东西。例如我选择使用coffeescript 和requirejs。后者涉及大量常规数量之上的回调汤。通常这些是我喜欢使用 Promise 处理的情况。经过一些最小的研究,promise-io似乎是一个合理的解决方案。它可以工作,但突然间我遇到了一个使用 all 组合承诺的问题(这似乎类似于 jQuery.when - 这是我经常使用的一种技术)。
以下是我的 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