欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > js map遍历与promise一起使用出现的问题及解决方法

js map遍历与promise一起使用出现的问题及解决方法

2024/10/24 13:21:48 来源:https://blog.csdn.net/weixin_43599212/article/details/139519396  浏览:    关键词:js map遍历与promise一起使用出现的问题及解决方法
1.async/await 与Promise的关系

async/await是Promise的语法糖

let result = await func()
// => 等价于
func().then(result => {// code here
})async function func () {return 1  
}
// => 等价与
function func () {return new Promise(resolve => resolve(1))
}
2.map方法的使用
let a= [1, 5, 10, 15];
let b= a.map((x) => {return x * 2;
});// b is now [2, 10, 20, 30]
// a is still [1, 5, 10, 15]

这是map的一般使用场景,但是当我们的一些计算操作变为异步的:比如某个参数需要请求额外接口才能获得

在这里插入图片描述
在这里插入图片描述
这时候返回的就是由Promise组成的数组了

Promise有个函数是Promise.all,它会将由Promise组成的数组依次执行,并返回一个Promise对象,这时候结果集就出来了

在这里插入图片描述
在这里插入图片描述
用Promise.all包装整个数组,然后await 获取最终结果

最后附上代码:

let list = await Promise.all(arr.map(async (e) => {let url = await this.getVideoUrl(e.camImet);e.vData = {hlsurl: url,cameraId: e.camImet,};return e;})
);
//  console.log(list);

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com