nodejs之koa的异步处理问题Promise /async的坑

当我们在学习戏新东西的时候,我们都难避免用经验去解决一些问题,
在这我要给大家说说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;
 }

希望大家记住这个坑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值