美文网首页
解决nodejs异步问题

解决nodejs异步问题

作者: super静_jingjing | 来源:发表于2019-01-18 15:42 被阅读0次

nodejs 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高
nodejs的每一个api都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发
我们经常使用的File的readFile事件就是一个并发事件。

console.log("1");
fs.readFile("mime.json",function (err,data) {
    console.log(data);
    console.log('2');
});
console.log("3");

代码的执行顺序是1-3-2;但是我们很多时候会需要1-2-3的方式去执行方法,这个时候我们可以通过以下三种方式去解决这个问题;
1、将readFile改成同步方法。即readFile-->readFileSync

const fsSync = fs.readFileSync('./mime.json');
const mimeObj = JSON.parse(fsSync.toString());

2、通过回调的方式解决

console.log("1");
function getMime(callback){
    fs.readFile("mime.json",function (err,data) {
        // console.log(data.toString());
        callback(data.toString()) ;
        console.log("2");
    });
}
getMime(function (result) {
    console.log(result);
    console.log("3");
});

3、nodejs 有多个内置的事件,我们可以通过引入events模块,并通过实例化eventEmitter类来绑定和监听事件,通过事件驱动的方式解决异步的问题
也可以说成是广播或者订阅
广播和接收广播 ---- 订阅和通知
具体使用如下

const events = require("events");
const eventEmitter = new events.EventEmitter();
//监听广播
eventEmitter.on('to_parent',function () {
    //接受到了广播事件
    console.log("接受到了广播事件")
});
setTimeout(function () {
    console.log("开始广播");
    eventEmitter.emit("to_parent","发送数据");
},2000);

在readFIle中这样使用

console.log("1");
function getMime(){
    fs.readFile("mime.json",function (err,data) {
       eventEmitter.emit("to_parent",data);
         console.log("2");
    });
}
getMime();
eventEmitter.on('to_parent',function (data) {
    //接受到了广播事件
    console.log("接受到了广播事件")
    console.log("3");
});

4、使用Promise方式---略

相关文章

  • 解决nodejs异步问题

    nodejs 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高nodejs的每一个api都是异步...

  • Nodejs异步回调的处理方法总结

    前些天弄了篇JavaScript异步问题解决方案,在nodejs中异步回调的处理方法也大同小异,我们来看看吧。 1...

  • nodejs同步异步问题

    产生问题的经过 手头有个项目,遇到一个问题,nodejs中通过执行shell命令来执行本地程序,我希望是先执行本地...

  • XDH_LESSON5

    nodejs io交互nodejs最大特性是采用异步IO与文件驱动的架构设计,对于高并发的解决方案,传统的架构是多...

  • 3.2KOA async/await 语法

    async/await 语法 作用 解决异步嵌套问题,传说中的终极解决方案 异步问题 async/await 实现...

  • JavaScript之异步概述

    1,异步(什么是异步,异步出现的原因,异步解决的问题,如何实现异步,什么时候需要异步模式。) JavaScript...

  • Nodejs 异步编程解决方案

    1. PubSub事件 事件监听模式是一种广泛应用于异步编程的解决方案,是回调函数的事件化,又称发布订阅模式。关于...

  • 认识并使用Promise

    Promise 是一个异步操作返回的对象,用来传递异步操作的消息。 可以解决的问题: 解决了回调地狱问题,不会导致...

  • 02.NodeJs基本语法

    一.认识NodeJs 1.NodeJs的事件驱动和异步IO 缺点: 2.npm介绍: ​ 是nodejs自带的...

  • ES6 同步和异步、Promise

    一.同步与异步 1. Promise作用:解决异步回调的问题 二.Promise对象 目的:创建异步对象,当异步对...

网友评论

      本文标题:解决nodejs异步问题

      本文链接:https://www.haomeiwen.com/subject/hgundqtx.html