前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Node 处理异步的方式

Node 处理异步的方式

作者头像
越陌度阡
发布2022-05-06 14:32:52
3810
发布2022-05-06 14:32:52
举报

Node 以异步著称,性能非常的好,但是在开发过程中我们时常要规避一些异步执行,要让程序按同步执行,如下的代码可以说明存在的问题。

代码语言:javascript
复制
var fs=require('fs');

console.log('1');

fs.readFile('FileType.json',function(err,data){
    console.log('2');
});

console.log('3');

以上代码依次执行 1、3 、2,实现宏观上并发执行,无法按照我们的设想顺序执行1 、2 、3

常见处理Node异步的方法有两种,一种是利用事件回调处理异步,另外一种是利用事件驱动处理异步。

1. 利用事件回调的方法如下:

代码语言:javascript
复制
var fs=require('fs');  

function getType(callback){
    fs.readFile('FileType.json',function(err,data){
        callback(data);
    })
};
getType(function(result){
    console.log(result.toString());
});

基本的原理为将方法作为参数传入函数中,在函数执行获取结果后,调用传入的方法将结果返回。

2. 利用事件驱动处理异步

代码语言:javascript
复制
// 引入模块
var events=require('events');

// 实例化对象
var EventEmitter=new events.EventEmitter();

// 监听to_parent的广播,但不执行,2秒以后广播了才开始执行。
EventEmitter.on('to_parent',function(data){
    console.log(data);
    // 给parent发送的数据
});

setTimeout(function(){
    // 广播to_parent事件
    EventEmitter.emit('to_parent','给parent发送的数据');
},2000);

实例化一个事件对象,然后通过on监听事件名和要接收的数据,通过emit广播事件名和要传播的数据,监听和广播的事件名必须一一对应。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档