fs模块循环加异步,最后在外部拼接,如何读取到想要的值?

刘杰强 2019-06-18 01:37:46
学习VUE时,自己写了个node,都是用的JSON文件假数据,遇到需要将几个文件中的数组拼接一下,然后再传出去,一直困扰于fs模块的异步问题,循环取值后在循环体中可以取到,但是在外部因为异步原因,直接跳过了循环,直接将空数组传了出去,不知如何在循环体外部获取这个拼接起来的数组

// 获取购物车列表
app.get('/getshopcarlist/', function (req, res) {
//这里传过来一串 ,分隔的数字
var id = req.query.ID
var idlist = id.split(",")
var pagePersonmessage = []

function getFileBylist(path,succCb,errCb){
fs.readFile(path, function (err, data) {
if (err) {
return errCb(err)
} else {
// console.log(path)
var person = data.toString();
person = JSON.parse(person);
var pagePerson = person.message[0]
// console.log(pagePersonmessage)
succCb(pagePerson)
}
})
}

for (let i in idlist) {
var path = "./shopcarlist/shopcarlist" + idlist[i] + ".json"
getFileBylist(path,
function(data){
pagePersonmessage = pagePersonmessage.concat(data)
console.log(pagePersonmessage + 'hahaha')
},
function(err){
console.log('失败的结果,使用失败回调' + err.message)
})

}


res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With,Origin,Content-Type,Accept");
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");

console.log(pagePersonmessage);
// var pagePersonList = { "status": 0, "message": pagePersonmessage }
res.send();
res.end();


});
...全文
84 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
刘杰强 2019-06-18
  • 打赏
  • 举报
回复
// 获取购物车列表
app.get('/getshopcarlist/', function (req, res) {
//这里传过来一串 ,分隔的数字
var id = req.query.ID
var idlist = id.split(",")
var pagePersonmessage = []

function getFileBylist(path) {
return new Promise(function (resolve, reject) {
fs.readFile(path, function (err, data) {
if (err) {
return reject(err)
} else {
console.log(path+"----path")
var person = data.toString();
person = JSON.parse(person);
var pagePerson = person.message[0]
// console.log(pagePersonmessage)
resolve(pagePerson)
}
})
})
}

var time = async function () {
var arr = [];
for (let i in idlist) {
var path = "./shopcarlist/shopcarlist" + idlist[i] + ".json"
arr=await getFileBylist(path)
pagePersonmessage=pagePersonmessage.concat(arr)
}
// console.log(pagePersonmessage)
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With,Origin,Content-Type,Accept");
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");

// console.log(pagePersonmessage);
var pagePersonList = { "status": 0, "message": pagePersonmessage }
res.send(pagePersonList);
res.end();
}


time()

});
scscms太阳光 2019-06-18
  • 打赏
  • 举报
回复
async await 去了解下

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧