当我们在学习戏新东西的时候,我们都难避免用经验去解决一些问题,
在这我要给大家说说node之koa的异步处理问题,用promise解决的问题
router.get(’/username’,async (ctx ,next)=>{
let username = ctx.url;
username = username.split("=")[1]
console.log(username)
return new Promise(function (resolve, reject) {
fs.readFile(’./json/user.json’,function(err,data){
data = JSON.parse(data);
if(data.indexOf(username) == -1){
// console.log(data )
// console.log(typeof data )
data.push(username)
console.log(data)
data = JSON.stringify(data)
fs.writeFile('./json/user.json', data , 'utf8',function(err){
if(err){
console.error(err,"*************");
}
console.log('----------新增成功-------------');
ctx.body = "1";
resolve(next());
})
}else{
ctx.body = "2";
resolve(next());
}
}).then( (data)=> {
console.log(data) //这种写法完全不对出现问题 前端获取不到数据
})
})
})
在github文档中我查到是这样写的
router.get('/username',async (ctx ,next)=>{
let username = ctx.url;
username = username.split("=")[1]
console.log(username)
return new Promise(function (resolve, reject) {
fs.readFile('./json/user.json',function(err,data){
data = JSON.parse(data);
if(data.indexOf(username) == -1){
// console.log(data )
// console.log(typeof data )
data.push(username)
console.log(data)
data = JSON.stringify(data)
fs.writeFile('./json/user.json', data , 'utf8',function(err){
if(err){
console.error(err,"*************");
}
console.log('----------新增成功-------------');
ctx.body = "1";
resolve(next());
})
}else{
ctx.body = "2";
resolve(next());
}
})
})//这样写的不同于.then方法
}),function () {
ctx.body;
}
希望大家记住这个坑