Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么thunkify/yield总是返回数组?_Javascript_Node.js_Yield_Thunk_Co - Fatal编程技术网

Javascript 为什么thunkify/yield总是返回数组?

Javascript 为什么thunkify/yield总是返回数组?,javascript,node.js,yield,thunk,co,Javascript,Node.js,Yield,Thunk,Co,我有一个叫做logInline的恶作剧改编自 我注意到,thunkified get似乎总是产生一个数组。这是故意的吗?是thunkify这么做的,还是产量的标准部分 注意这里的变量“google”总是一个数组。为什么?请注意,request.get通常返回err和response,即没有数组 顺便说一句,脚本返回200或google.com返回的任何其他响应代码 唉,这是相当稀少的 编辑:thunk并不总是返回数组。例如,如果var readFile=thunkyfifs.readFile;:

我有一个叫做logInline的恶作剧改编自

我注意到,thunkified get似乎总是产生一个数组。这是故意的吗?是thunkify这么做的,还是产量的标准部分

注意这里的变量“google”总是一个数组。为什么?请注意,request.get通常返回err和response,即没有数组

顺便说一句,脚本返回200或google.com返回的任何其他响应代码

唉,这是相当稀少的

编辑:thunk并不总是返回数组。例如,如果var readFile=thunkyfifs.readFile;:

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

我注意到,thunkified get似乎总是产生一个数组。这是故意的吗

我不知道,也不能证实,正如你所说的co文件,收益率在这里不感兴趣,而且非常稀少

然而,我可以想象,收益率确实会导致回调的arguments数组,以便轻松支持多个返回值。您可以使用分解分配来获取单个结果:

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

thunkify中似乎有某种东西控制着Thunk的返回

事实上,这种情况只是偶尔发生。我现在查了一下,上面写着

if (arguments.length > 2) res = slice.call(arguments, 1);
因此,如果使用多个结果参数调用thunkified调用的回调函数,但假设它是传递给fs.readFile或request.get的回调函数,则会忽略错误参数,然后将数组生成到生成器代码中

我注意到,thunkified get似乎总是产生一个数组。这是故意的吗

我不知道,也不能证实,正如你所说的co文件,收益率在这里不感兴趣,而且非常稀少

然而,我可以想象,收益率确实会导致回调的arguments数组,以便轻松支持多个返回值。您可以使用分解分配来获取单个结果:

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

thunkify中似乎有某种东西控制着Thunk的返回

事实上,这种情况只是偶尔发生。我现在查了一下,上面写着

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

因此,如果thunkified调用的回调函数(但假设它是传递给fs.readFile或request.get directly的回调函数)被多个结果参数调用,则会忽略错误参数,那么将向生成器代码生成一个数组。

这只是一个猜测,因为我没有时间查看yield和Thunkifid,但when和node.lift也有类似的行为。由于它包装的回调方法可能在err旁边有多个参数,因此结果总是一个数组,其中[0]是第一个参数,[1]是第二个参数,……这只是一个猜测,因为我没有时间查看yield和thunkify,但when和node.lift也有类似的行为。由于它包装的回调方法可能在err旁边有多个参数,因此结果总是一个数组,其中[0]是第一个参数,a[1]是第二个参数,…谢谢,看起来在节点ATM中仍在进行解构分配,所以我目前使用var google=yield get'http://google.com'[0];啊,我本来希望它们能工作的……FF确实支持它们这么长时间:-/谢谢,看起来在节点ATM中解构任务仍在进行中,所以我现在做var google=yield get'http://google.com'[0];啊,我原以为他们会工作……FF支持他们这么长时间了:-/