js如何处理异步函数
问题:一个数组arr里的每一个元素需要通过一个函数process进行处理这个process函数里面含有处理图片的异步操作,这个函数有一个参数一个返回值
如何对arr数组进行遍历,使res数组里的值为process的返回值
var res = []
var arr = ['file1', 'file2', 'file3']
var process = function(e) {
/*
一些异步的处理图片的操作
ee = e + 1
*/
return ee
}
arr.forEach(function(item, i) {
var img = process(item)
res.push(img)
}) 楼主可以尝试用async 和await 详情可以看看这篇文章https://blog.csdn.net/weixin_42671417/article/details/108667140 用了一个循环定时器和一个promise解决了问题,想了好久问题是解决了,但是可能还会有更好的解决办法
new Promise(function(resolve, rej) {
var res = []
var arr = ['file1', 'file2', 'file3']
arr.forEach(function(item, i) {
ALLPIC++; // 得到arr 的长度
process(item)
})
function process(e) {
/*
一些异步的处理图片的操作(onload)
*/
ee = e + 1
// 处理完后
HAVEFINISH++
res.push(ee)
return;
}
var wait = setInterval(function() {
if (ALLPIC == HAVEFINISH) {
clearInterval(wait)
resolve(self.arrFiles)
}
}, 1000);
})
页:
[1]