美文网首页
JavaScript异步编程:(一)回调函数

JavaScript异步编程:(一)回调函数

作者: fanren | 来源:发表于2022-05-13 17:53 被阅读0次

前言

我们常说JavaScript是单线程的,实际是指JS引擎中负责解释和执行JavaScript代码的线程只有一个,不妨叫它主线程。与之对应的其他线程还有处理ajax的线程,定时器线程,读写文件的线程(node.js)等,可以叫它们为工作线程。

前端开发中,我们很少用到异步编程(除了网络请求),但是偶尔会遇到一些耗时的操作,就需要我们通过异步来提高性能;

异步的方式

  • 回调函数
  • Promise
  • await

一、回调函数

异步编程中,复杂的地方在于异步线程执行完毕后,如果通知主线程;

回调函数是简单的通知主线程的方法;

  • 封装一个异步方法asyncDoSomething
asyncDoSomething(complete) {
  setTimeout(function(){
    // 异步执行
    console.log('doSomething');
    // 执行完成后,通知主线程
    complete();
  }, 1000)
},
  • 调用该异步方法
console.log('start');
// 调用异步方法,在调用成功后,打印complete
this.asyncDoSomething(function(){
  console.log('complete')
})
console.log('end');
  • 运行结果


    结果

end在doSomething前面打印,说明该方法是异步方法;
complete是在doSomething后,说明complete是在异步方法运行结束之后,才执行的;

二、回调函数的缺点

回调函数虽然帮我们实现了异步编程,但是它有着缺陷:代码混乱、不易阅读;

如果这个异步方法里面逻辑很复杂,需要在不同的情况下,都需要通知主线程,那么意味着我们要写多个回调函数,会导致代码非常混乱,很难阅读,甚至导致难以维护;

console.log("start");
this.asyncDoSomething(() =>{
  console.log("complete");
  this.asyncDoSomething2(() => {
    console.log("complete2");
    this.asyncDoSomething3(() => {
      console.log("complete3");
    });
  });
});
console.log("end");

ps:为了解决这一缺陷,JavaScript引入了Promise;

相关文章

  • 含答案的面试题总结

    1. 说说JavaScript中有哪些异步编程方式? 1. 回调函数 回调函数是异步编程的基本方法。其优点是易编写...

  • 《全栈工程师修炼指南》学习笔记 15

    异步编程 JavaScript 回调函数容易引起回调地狱 后来有了 Promise,可以将回调函数以 then 的...

  • Async/Await 函数用法

    JavaScript编程异步操作解决方案:回调函数 => Promise对象 => Generator函数 => ...

  • Koa学习笔记#1

    Koa的执行过程 背景:JavaScript为了实现异步编程,传统的方式有回调函数、事件监听等。所谓回调函数,就是...

  • 07_Node.js Event

    一、回调函数 callback 1、回调函数 Node.js 异步编程的直接体现就是回调,异步编程依托于回调来实现...

  • Promise快速上手

    概述 回调函数是JavaScript异步编程的根基,但如果我们直接使用传统回调方式去完成复杂的异步流程,就无法避免...

  • ES6学习--异步编程--Generator

    异步编程 : (异步编程的语法目的就是让异步编程更像同步编程) 回调函数利用回调函数实现异步编程本身没有问题, 问...

  • js回调与异步编程

    回调与异步编程 一、回调函数的使用场景 异步编程。 事件监听、处理。 setTimeout、setInterval...

  • 大前端~JavaScript异步编程

    可以实现JavaScript异步编程的方法有: 回调函数 事件监听 发布/订阅 Promise对象 ... 任何函...

  • 彻底弄清Promise、Generator以及Async/awa

    我们知道JavaScript是单线程语言,如果没有异步编程非得卡死。以前,异步编程的方法有下面四种 回调函数 事件...

网友评论

      本文标题:JavaScript异步编程:(一)回调函数

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