node.js--处理异步

一、回调函数处理异步

将异步代码封装在一个函数中,函数参数为callback,通过此回调函数传递数据
function getdata(callback){
    fs.readFile("stu.txt",(error,data)=>{
       if(error){
         throw error;
       }
       callback(data.toString());
    })
}        
//result 即为 getdata 函数中callback的参数 => data.toString()
getdata((result)=>{
    console.log(result);
})

二、事件驱动处理异步

使用事件驱动模块,创建事件驱动对象,用对象的on()、emit()方法进行处理
emit("自定义事件名称","传递的数据");   ---事件内部发布广播
on("自定义事件名称",callback)   --在外部监听广播
//1.加载事件驱动模块
let events = require("events");
//2.创建事件驱动的对象
let eventemit = new events.EventEmitter();

//3.使用事件驱动处理
   fs.readFile("stu.txt",(error,data)=>{
      if(error){
          throw error;
      }
      //发布  emit("自定义事件名称","传递的数据");
      eventemit.emit("mydata",data);
   })
   //监听
   eventemit.on("mydata",(res)=>{
       console.log(res.toString());
   })

三、es6 promise对象处理异步

成功状态下将data作为resolve()的参数传出,错误状态下将error作为reject()的参数传出
let promise = new Promise((resolve,reject)=>{
        fs.readFile("stu.txt",(error,data)=>{
            if(error){
                reject(error);
            }
            //data作为成功状态resolve传递的值
            resolve(data);
         })
    })

    promise.then((res)=>{
       console.log(res.toString());
    },(error)=>{
       console.log(error);
    })

四、es7 async处理异步

用法类似于promise对象处理
 async function getdata(){
        try{
            let obj=await new Promise((resolve,reject)=>{
                fs.readFile("stu.txt",(error,data)=>{
                    if(error){
                        throw error;
                    }
                     resolve(data);
                 })
            })
           return obj;
        }
        catch(e){
           throw e;
        }
     }

     getdata().then((res)=>{
       console.log(res.toString());
     })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值