美文网首页
异步的发展

异步的发展

作者: 没了提心吊胆的稗子 | 来源:发表于2019-08-13 16:19 被阅读0次

回调函数
存在两个问题
1、不能try catch
执行异步代码,结果放在回调函数里面回调函数再执行,这是两个不同的过程,若是在回调函数中发生错误是捕获不到的
因为try的时候错误还没发生,catch的时候错误已经发生完了,无法捕获
2、不能return
异步代码执行的时候不能立即拿到结果,所以不能return,比如读取文件的过程
3、回调地狱
当访问服务器的时候,比如请求一个html页面,用户列表的话服务器一边会去读取模板文件(可能是ejs, pug,jade,handlebar),另一边还要读取数据(可能是放在文件里,也可能在数据库里),这两个过程都很慢,所以是异步的。
这种方式代码阅读不易
难以维护
效率也很低,因为他们是串行的

fs.readFile('template.txt', 'utf8', function(err, template){
    fs.readFile('data.txt', 'utf8',  function(err, data){
        console.log(template+data);
    })
})

通过事件发布订阅解决回调嵌套的问题

// 这时node核心模块中的一个类,通过它可以创建事件发射器的实例
// 里面有on方法表示注册监听,emit方法表示提交事件
let EventEmitter = require('events');
let eve = new EventEmitter();
// 监听数据获取成功事件  事件发生后调用回调函数
eve.on('ready', function(key, value){});

fs.readFile('template.txt', 'utf8',  function(err, template){
    eve.emit('ready', 'template', template);
});
fs.readFile('data.txt', 'utf8',  function(err, data){
    eve.emit('ready', 'data', data);
});

通过哨兵函数来处理(不灵活)

function done(key, value){});

fs.readFile('template.txt', 'utf8',  function(err, template){
    done('template', template);
});
fs.readFile('data.txt', 'utf8',  function(err, data){
   done('data', data);
});

相关文章

  • 异步的发展

    发展过程 callback -> promise -> genrator + co -> async + awai...

  • 异步的发展

    回调函数存在两个问题1、不能try catch执行异步代码,结果放在回调函数里面回调函数再执行,这是两个不同的过程...

  • 12,异步的发展

    1,callback 2,Promise 3,Generator(co函数库) 4,Async/Await

  • .NET多线程(五)异步操作

    5、异步操作 5.1 异步操作基础 异步操作发展历史,APM模式,EAP模式,TPL模式 .NET 1.0 Sys...

  • js异步发展简史

    什么是异步? 所谓异步,简单来说就是异步任务(不会马上就完成的任务);但是js不会等待你这个任务完成,而是直接执行...

  • JS异步发展历程

    最近在看nodejs相关的内容,正好有提到几个异步调用的例子,于是想借着这个机会整理一下JS的异步发展历程,做下整...

  • javascript异步发展史

    js中的异步是指一个函数在执行过程中,其中一部分不能马上执行完毕,然后执行函数体中另外一部分。等到第一部分得到返回...

  • 细说JS异步发展历程

    知其然知其所以然,首先了解三个概念: 1.什么是同步? 所谓同步,就是在发出一个"调用"时,在没有得到结果之前,该...

  • js 异步系列(1) -发展

    ajax 最早为了实现局部请求无刷新,有了ajax的概念。在原生js是时代,请求数据都需要自己手写一个ajax。现...

  • JavaScript异步发展史

    一道面试题引发的血战。问:怎么理解异步的发展过程,例如axios、ajax、promise、await、async...

网友评论

      本文标题:异步的发展

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