flash手机网站制作,怎么做微帮网站,室内设计效果图及文字介绍,seo外推上排名需求分析#xff1a;根据一级标题ID筛选出所有对应的二级标题#xff0c;返回一级标题ID#xff0c;标题名和二级标题ID#xff0c;标题名组成的数组 问题#xff1a;通过forEach遍历所有一级标题取对应的ID#xff0c;根据ID条件查找所有的二级标题#xff0c;遍历符合… 需求分析根据一级标题ID筛选出所有对应的二级标题返回一级标题ID标题名和二级标题ID标题名组成的数组 问题通过forEach遍历所有一级标题取对应的ID根据ID条件查找所有的二级标题遍历符合条件的二级取出二级标题的ID和标题名此时循环内部嵌套条件查找是个异步函数resolve返回的结果为空。注此处getSecondTitle为封装的读取数据库的异步函数 const allTitleId function(firstTitleArray){return new Promise(function(resolve,reject){let secondArr[],secondObj{},itemObj{},dataArray[];//console.log(1)firstTitleArray.forEach(function(item){console.log(1)getSecondTitle(item).then(function(ret){// console.log(ret)secondArr[];ret.forEach((item2){secondObj{};secondObj[_id] String(item2._id);secondObj[title] item2.title;secondArr.push(secondObj)//console.log(secondArr)})console.log(2)itemObj JSON.parse(JSON.stringify(item));itemObj[secondTitle] secondArr;dataArray.push(itemObj)}).catch(function(err){reject(err)})})console.log(3)resolve(dataArray)})
} 解决javascript代码都是同步执行的代码都在在一个代码“队列”里面。与此同时javascript还有一个“Event Queue”事件队列里都是处理一些异步的callback/handler处理ajax response点击啊文件数据库操作结果。关键是只有代码队列所有代码都执行完毕了javascript才会从事件队列里取出一个callback/handler来执行。依赖于事件循环处理异步函数获取数据会导致脚本事件执行顺序不正确无法按需求获取数据。应采用递归方法处理异步函数获取数据。 const allTitleId function(firstTitleArray){return new Promise(function(resolve,reject){let secondArr[],secondObj{},itemObj{},dataArray[];(function secondTitleloop(index){getSecondTitle(firstTitleArray[index]).then(function(ret){secondArr[];ret.forEach((item2){secondObj{};secondObj[_id] String(item2._id);secondObj[title] item2.title;secondArr.push(secondObj)})itemObj JSON.parse(JSON.stringify(firstTitleArray[index]));itemObj[secondTitle] secondArr;dataArray.push(itemObj)if (indexfirstTitleArray.length) {secondTitleloop(index);} else {resolve(dataArray)}}).catch(function(err){reject(err)})})(0)})
} 转载于:https://www.cnblogs.com/xuxiaoqiangAndHM/p/10766029.html