请问在foreach里面进行异步操作,怎么返回异步操作后的数据?
代码如下:
function longTimeDo() {
let data = [];
let sourse = [1,2,3,4,5];
sourse.forEach(value=>{
setTimeout(()=>{
data.push(value);
},1000);
});
//?怎么返回这个异步完成的data
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你可以用
Promise.all
或者for of
加async/await
。这样是不行的哦:
输出结果为
从结果可以看到, 在循环中的异步只是会在循环中作用, 而不能影响循环外部. 如果你想让这个函数返回 异步后的结果的话 就相当于异步改同步, 就要用到Primise了
最low的办法是加个计数,num=0;settimeout一次就加1,判断当num==source.length的时候再return data