网站制作价格甄选乐云践新,北京通网站建设,延安商城网站开发设计,wordpress系列文章实现一、问题描述及解答#xff1a;
在Promise(异步事件)中#xff0c;通过遍历的方式处理数据#xff0c;最后将带有数据的Promise通过return返回#xff0c;在async/await处理机制中的到的数据是一个空数据组[]或不完整的数据#xff0c;如下#xff1a; 使用定时器后数据…一、问题描述及解答
在Promise(异步事件)中通过遍历的方式处理数据最后将带有数据的Promise通过return返回在async/await处理机制中的到的数据是一个空数据组[]或不完整的数据如下 使用定时器后数据完整的拿到了如 最终解决问题如下
二、原理剖析
上面代码看起来肯定乱糟糟的我平时刷到这种文章也是直接差掉那么现在就将最基本原理总结下面
// 问题代码
function getResult() {let arr [];for (let i 0; i 3; i) {//循环中使用异步api,这里是用定时器代替setTimeout(() {arr.push(i)}, 0)}console.log(arr) // 打印的结果为[]
}
getResult()// 正常代码
function getData() {let arr [];let promiseArr [];for (let i 0; i 3; i) {// 循环中创建Promise对象let dp new Promise((resolve) {// Promise回调中处理当前异步任务之后resolvesetTimeout(() {arr.push(i);resolve()}, 0)})// 当前循环里面Promise外面给临时数组追加数据promiseArr.push(dp)}// 循环外面等待所有Promise任务完成在做数据响应Promise.all(promiseArr).then(res {console.log(arr) // 打印结果[ 0, 1, 2 ]})
}
getData()提示本文图片等素材来源于网络若有侵权请发邮件至邮箱810665436qq.com联系笔者 删除。 笔者苦海