Node.js 带有请求范围的coffeescript
Node.js 带有请求范围的coffeescript,node.js,coffeescript,Node.js,Coffeescript,上面是带有Node.js请求模块的Coffeescript。我不知道如何获取请求函数内部的数据。这一直是我申请的主要障碍 谢谢大家! **编辑** 瓦迪姆·巴雷舍夫的代码更新成功了!非常感谢:) 在请求中指定函数回调之前,您正在尝试输出exports.in。因为请求函数是异步的。您可以通过回调或事件获取此函数的结果 更新: request = require('request') auth = url: '' method: 'POST' json: credentials: user
上面是带有Node.js请求模块的Coffeescript。我不知道如何获取请求函数内部的数据。这一直是我申请的主要障碍 谢谢大家! **编辑**
瓦迪姆·巴雷舍夫的代码更新成功了!非常感谢:) 在
请求中指定函数回调之前,您正在尝试输出exports.in
。因为请求
函数是异步的。您可以通过回调或事件获取此函数的结果
更新:
request = require('request')
auth =
url: ''
method: 'POST'
json:
credentials:
username: ""
key: ""
exports = exports ? this
request auth, (err, res, body) ->
exports.inside = body
console.log(exports.inside)
在请求
函数回调中分配之前,您正在尝试输出exports.in
。因为请求
函数是异步的。您可以通过回调或事件获取此函数的结果
更新:
request = require('request')
auth =
url: ''
method: 'POST'
json:
credentials:
username: ""
key: ""
exports = exports ? this
request auth, (err, res, body) ->
exports.inside = body
console.log(exports.inside)
一旦请求函数完成,它就会触发回调,这是唯一可以可靠访问“body”值的地方
您遇到的问题是,当console.log函数运行时,由于请求未完成,因此没有触发回调
有关异步编程环境中程序流的更有力描述,请参阅
---编辑---举例说明:
考虑这一点:
request = require('request')
exports = exports ? this
getAuth = (callback) ->
auth =
url: ''
method: 'POST'
json:
credentials:
username: ""
key: ""
request auth, (err, res, body) ->
exports.inside = body
callback err, body
getAuth (err, body) ->
# here is exports.inside ready
console.log exports.inside
# also you can access body and request error arguments here
# body === exports.inside here
# err is request error (is null/undifined if request is successful)
如果我们跟踪此操作,我们会发现执行顺序为1,2,3,6,…4,5,其中,由于磁盘i/o的性质,省略号表示未知的时间量
由于读取操作需要一些时间才能完成,而不是等待其结果,因此我们提供了一个回调函数,该函数将在将来读取文件内容时的某个不可预测点被调用,因此可以分配给“result”
当程序流到达第6行时,由于文件读取操作尚未完成,因此未调用回调,因此未设置结果
这就是异步编程的本质,在异步编程中,我们可以将浪费的时间用于其他目的,而不是等待操作完成后再继续
---第二版---
好的,根据您的请求,这里是您的示例,经过修改后可以正常工作
1: path='/tmp/file.txt'
2: result=''
3: fs.readFile path, (err,data) ->
4: throw err if err
5: result=data
6: console.log result
请注意,正如前面多次描述的,您无法在回调之外访问请求的结果,因为您不知道请求何时完成。一旦请求函数完成,它将触发回调,这是您唯一可以可靠访问“body”值的地方
您遇到的问题是,当console.log函数运行时,由于请求未完成,因此没有触发回调
有关异步编程环境中程序流的更有力描述,请参阅
---编辑---举例说明:
考虑这一点:
request = require('request')
exports = exports ? this
getAuth = (callback) ->
auth =
url: ''
method: 'POST'
json:
credentials:
username: ""
key: ""
request auth, (err, res, body) ->
exports.inside = body
callback err, body
getAuth (err, body) ->
# here is exports.inside ready
console.log exports.inside
# also you can access body and request error arguments here
# body === exports.inside here
# err is request error (is null/undifined if request is successful)
如果我们跟踪此操作,我们会发现执行顺序为1,2,3,6,…4,5,其中,由于磁盘i/o的性质,省略号表示未知的时间量
由于读取操作需要一些时间才能完成,而不是等待其结果,因此我们提供了一个回调函数,该函数将在将来读取文件内容时的某个不可预测点被调用,因此可以分配给“result”
当程序流到达第6行时,由于文件读取操作尚未完成,因此未调用回调,因此未设置结果
这就是异步编程的本质,在异步编程中,我们可以将浪费的时间用于其他目的,而不是等待操作完成后再继续
---第二版---
好的,根据您的请求,这里是您的示例,经过修改后可以正常工作
1: path='/tmp/file.txt'
2: result=''
3: fs.readFile path, (err,data) ->
4: throw err if err
5: result=data
6: console.log result
请注意,正如前面多次描述的,您无法在回调之外访问请求的结果,因为您不知道请求何时完成。您有没有示例,以便我更好地理解。我对JS/CS还很陌生。我仍然在用上面的例子做回调。。。。。。异步并不容易。我们非常欢迎您的任何帮助。:)我仍在与这个问题作斗争,并试图让CoffeeScript/请求回拨正常工作。任何和所有的帮助都是很好的。:)你有没有举个例子,让我更好地理解。我对JS/CS还很陌生。我仍然在用上面的例子做回调。。。。。。异步并不容易。我们非常欢迎您的任何帮助。:)我仍在与这个问题作斗争,并试图让CoffeeScript/请求回拨正常工作。任何和所有的帮助都是很好的。:)这是有道理的,但对我来说,水越来越脏了。是时候好好举出例子来了,我知道问题出在哪里,但你有没有办法用我的例子来说明有效的解决方案……我对此感到困惑。非常感谢。这是有道理的,但对我来说,水越来越脏了。是时候好好举出例子来了,我知道问题出在哪里,但你有没有办法用我的例子来说明有效的解决方案……我对此感到困惑。非常感谢。