Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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异步方法能否在不同时间返回多个值?_Javascript_Node.js - Fatal编程技术网

javascript异步方法能否在不同时间返回多个值?

javascript异步方法能否在不同时间返回多个值?,javascript,node.js,Javascript,Node.js,我有一个异步返回的值列表,但每次返回的值数量有限 所以我调用了我的函数一次,它有一个由20个不同元素组成的数组,比如[1,2,…,20],它一直每秒返回5个元素。所以我想: [1,2,…,5]在0秒时, [6,7,…,10]在1秒时, 等等 我在考虑使用缓冲区文件。如果这是一个有效的解决方案,有人能告诉我如何为给定的示例实现它吗?异步生成器函数(或方法)可以随时间生成(松散地返回)一系列值。下面是一个例子: 函数sleepRandom(最大值){ 返回新承诺(resolve=>setTimeo

我有一个异步返回的值列表,但每次返回的值数量有限

所以我调用了我的函数一次,它有一个由20个不同元素组成的数组,比如[1,2,…,20],它一直每秒返回5个元素。所以我想: [1,2,…,5]在0秒时, [6,7,…,10]在1秒时, 等等

我在考虑使用缓冲区文件。如果这是一个有效的解决方案,有人能告诉我如何为给定的示例实现它吗?

异步生成器函数(或方法)可以随时间生成(松散地返回)一系列值。下面是一个例子:

函数sleepRandom(最大值){
返回新承诺(resolve=>setTimeout(resolve,Math.floor(Math.random()*maxMs));
}
异步函数*示例(最大值){
yield-1;//显式值的示例
//等待500毫秒
等待睡眠(800);
//循环示例
对于(设i=0;i{
对于等待(让示例(10)的值){
console.log(值);
}
})()
.catch(错误=>{
控制台错误(error);
});您可以使用节点:

var events=require('events');
函数块(arr,chunksize=5,delay=1000,em=null){
如果(!em)em=new events.EventEmitter();
如果(arr.length>0)设置超时(()=>{
em.emit('nextChunk',arr.splice(0,chunksize));
spitChunks(arr、chunksize、delay、em);
},延误);
返回em;
}
设数字=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
让发射器=块(数字);
on('nextChunk',data=>console.log(data));

您的情况是。这意味着您应该询问您正在处理的是什么,而不是询问异步函数是否可以“在不同时间返回多个值”,这肯定是错误的问题。@amn,谢谢您的建议,我下次提问时一定会记住这一点。谢谢,这真的很有帮助!