求JS大神帮看看代码
import dept from './dt.js'import pat from './pt.js'
async function getSelectDt(uid) {
const deptArr = await dept.getDept(uid);//获取原始json数组
let fiArr = deptArr.filter(item => item.Dept_Type == '1');//过滤一遍生成新的数组
let tmp = [];
fiArr.map(async n => {
let m = await pat.getPat(n.Dept_Code)//getPat返回的是一个Promise
let j = {
"Dept_Code": n.Dept_Code,
"Dept_Type": n.Dept_Type,
"DEPT_NAME": n.DEPT_NAME,
"User_Id": n.User_Id,
"Item": m
}
tmp.push(j);
console.log(tmp)//单次循环生成的新的数组是我想要的
});
console.log(tmp) //这里结果确实空的
}
export {
getSelectDt
}
求大神帮忙看看,第18行的位置单次循环确实输出了我想要的结果,但是我怎么把最终的tmp数组给返回来呢,第20行输出的结果始终是空的,而且第20行的代码总是优先于第18行运行的
我尝试在第8行加上await ,但始终还是第20行先运行,求大神指导,跪谢
js map,forEach等都是同步的
可以参考 https://blog.csdn.net/weixin_41602509/article/details/103494265
其实使用最简单的for循环就行 @独木君 @柒點貌似发错区了,请帮我搬到『编程语言区』 虽然我怎么懂js 但是我看第八行有个=>这是判断吗
如果判断失败肯定直接运行下一句了 已经移动了 fanvalen 发表于 2021-3-16 20:06
虽然我怎么懂js 但是我看第八行有个=>这是判断吗
如果判断失败肯定直接运行下一句了
这是map使用的参数,是一个函数,第18行是有输出的,证明里面是运行了的 import dept from './dt.js'
import pat from './pt.js'
async function getSelectDt(uid) {
const deptArr = await dept.getDept(uid);//获取原始json数组
let fiArr = deptArr.filter(item => item.Dept_Type == '1');//过滤一遍生成新的数组
let tmp = [];
await Promise.all(fiArr.map(async n => {
let m = await pat.getPat(n.Dept_Code)//getPat返回的是一个Promise
let j = {
"Dept_Code": n.Dept_Code,
"Dept_Type": n.Dept_Type,
"DEPT_NAME": n.DEPT_NAME,
"User_Id": n.User_Id,
"Item": m
}
tmp.push(j);
console.log(tmp)//单次循环生成的新的数组是我想要的
}));
console.log(tmp) //这里结果确实空的
}
export {
getSelectDt
} 我说说我的思路吧:
在循环之前声明一个变量,变量指定一个值。
在第18行,判断这个变量是否为之前自己指定的值,如果是,就用这个变量记录你要的结果(这样可以保证是第一次循环的结果,而不是其他次的。),运行完20行后再返回就行了。 map后的返回值 await promise.all 一下 本帖最后由 轩云呀 于 2021-3-17 10:18 编辑
import dept from './dt.js'
import pat from './pt.js'
async function getSelectDt(uid) {
const deptArr = await dept.getDept(uid);//获取原始json数组
let fiArr = deptArr.filter(item => item.Dept_Type == '1');//过滤一遍生成新的数组
let tmp = [];
await fiArr.map(async n => {
let m = await pat.getPat(n.Dept_Code)//getPat返回的是一个Promise
let j = {
"Dept_Code": n.Dept_Code,
"Dept_Type": n.Dept_Type,
"DEPT_NAME": n.DEPT_NAME,
"User_Id": n.User_Id,
"Item": m
}
tmp.push(j);
console.log(tmp)//单次循环生成的新的数组是我想要的
});
console.log(tmp) //这里结果确实空的
}
export {
getSelectDt
}
第八行也加个await
页:
[1]