【发布时间】:2014-05-25 18:03:15
【问题描述】:
我有一个名为 logInline 的 thunk(改编自 Co documentation)。
我注意到 thunkified get 似乎总是 yield 一个数组。这是设计使然吗?是thunkify 这样做,还是yield 的标准部分?
var co = require('co'),
get = thunkify(request.get);
var logInline = co(function *(){
var google = yield get('http://google.com');
console.log(google[0].statusCode);
})
logInline()
请注意,这里的变量 'google' 始终是一个数组。为什么?注意request.get 通常返回err, response(即没有数组)。
顺便说一句,脚本返回 200 或 google.com 返回的任何其他响应代码。
唉the yield documentation 的 ATM 机太少了。
编辑: Thunks 并不总是返回数组。比如var readFile = thunkify(fs.readFile);:
var fileContents = yield readFile('myfile', 'utf8');
log(fileContents);
在这种情况下,fileContents 不会在数组中返回。那么为什么谷歌在一个数组中呢? thunkify 中似乎有一些东西可以控制 thunk 返回的内容
【问题讨论】:
-
这只是一个猜测,因为我没有时间查看
yield和thunkify,但when和node.lift也有类似的行为。由于被它包装的回调方法可能有(除了err)多个参数,结果总是一个数组,其中a[0]是第一个参数,a[1]是第二个参数, ...
标签: javascript node.js yield thunk co