gpt4 book ai didi

javascript - 为什么 thunkify/yield 总是返回一个数组?

转载 作者:行者123 更新时间:2023-11-30 08:44:44 25 4
gpt4 key购买 nike

我有一个名为 logInlinethunk(改编自 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。

编辑:Thunk 并不总是返回数组。例如,如果 var readFile = thunkify(fs.readFile);:

var fileContents = yield readFile('myfile', 'utf8');
log(fileContents);

在这种情况下,fileContents 不会在数组中返回。那么为什么谷歌在一个数组中?thunkify 中似乎有某种东西控制着 thunk 返回的内容

最佳答案

I notice the thunkified get always seems to yield an array. Is this by design?

我不知道也无法确认,正如您所说的文档(co,yield 在这里不感兴趣)非常稀疏。

不过,我可以想象 yield 确实会导致回调的参数数组,从而轻松支持多个返回值。您可以使用解构赋值来获取单个结果:

co(function *(){
var [google] = yield get('http://google.com');
console.log(google.statusCode);
})

编辑:

There seems to be something in thunkify controlling what the thunks return

的确,这种情况只是偶尔发生。我现在检查了the code ,上面写着

if (arguments.length > 2) res = slice.call(arguments, 1);

所以如果调用回调函数(thunkified 调用,但想象它是直接传递给 fs.readFilerequest.get 的回调函数)如果有多个结果参数(错误参数被忽略),那么一个数组将yield生成器代码。

关于javascript - 为什么 thunkify/yield 总是返回一个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23015017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com