美文网首页
javaScript 异步任务

javaScript 异步任务

作者: 52赫兹_Alice | 来源:发表于2020-01-06 22:54 被阅读0次

JavaScript 同时只能执行一个任务,其他任务都必须在后面排队等待。这就是我们常说的单线程。这也是JavaScript 的核心特征。

什么是异步任务?
异步任务是那些被引擎放在一边,不进入主线程、而进入任务队列的任务。只有引擎认为某个异步任务可以执行了(比如 Ajax 操作从服务器得到了结果),该任务(采用回调函数的形式)才会进入主线程执行。排在异步任务后面的代码,不用等待异步任务结束会马上运行,也就是说,异步任务不具有“堵塞”效应。

举例来说,Ajax 操作可以当作同步任务处理,也可以当作异步任务处理,由开发者决定。如果是同步任务,主线程就等着 Ajax 操作返回结果,再往下执行;如果是异步任务,主线程在发出 Ajax 请求以后,就直接往下执行,等到 Ajax 操作有了结果,主线程再执行对应的回调函数。

JavaScript 运行时,除了一个正在运行的主线程,引擎还提供一个任务队列(task queue),里面是各种需要当前程序处理的异步任务。(实际上,根据异步任务的类型,存在多个任务队列。为了方便理解,这里假设只存在一个队列。)

首先,主线程会去执行所有的同步任务。等到同步任务全部执行完,就会去看任务队列里面的异步任务。如果满足条件,那么异步任务就重新进入主线程开始执行,这时它就变成同步任务了。等到执行完,下一个异步任务再进入主线程开始执行。一旦任务队列清空,程序就结束执行。

异步任务的写法通常是回调函数。一旦异步任务重新进入主线程,就会执行对应的回调函数。如果一个异步任务没有回调函数,就不会进入任务队列,也就是说,不会重新进入主线程,因为没有用回调函数指定下一步的操作。

//   this.axios.post("/s/com.entgene.master.service.query/query", {
//         msg: '北京'
//     }).then(response => {
//       console.log(responese);
//     })

相关文章

  • JavaScript执行机制

    概述 为什么javascript是单线程的?为什么需要存在异步任务?JavaScript怎么处理异步任务的?宏任务...

  • 【javaScript练习】2021-02-23

    javaScript 作用域,异步执行,requestAnimationFrame 微任务,宏任务,异步执行 Ar...

  • javaScript 异步任务

    JavaScript 同时只能执行一个任务,其他任务都必须在后面排队等待。这就是我们常说的单线程。这也是JavaS...

  • 深入浅出Javascript事件循环机制-上(转)

    浅薄概念 Javascript是单线程,执行任务时,分同步任务和异步任务,执行同步任务时放入栈中执行,执行异步任务...

  • event loop

    javascript是单线程的 任务队列 所有的任务分为同步任务和异步任务,同步任务是在主线程上排队执行的,异步任...

  • Javascript 异步编程(三)定时器

    Javascript 异步编程(三) 并行?并发?异步? 同步:synchronous: 指所有任务按出现的先后顺...

  • JavaScript事件循环机制

    JavaScript单线程执行 同步栈执行完成后,再执行异步队列 异步队列中分为宏任务和微任务 微任务比宏任务优先...

  • JS中的setTimeout和setInterval

    基本要点: 两者都用于计时 两者都是异步任务 JavaScript中首先执行主线程任务,其次执行异步任务 两者中的...

  • 如何优雅地取消 JavaScript 异步任务?

    在程序中处理异步任务通常比较麻烦,尤其是那些不支持取消异步任务的编程语言。所幸的是,JavaScript 提供了一...

  • JavaScript 中 的异步任务

    在 JS 中, 基本上来说 有 三种 异步操作 [MicroTask] MicroTask 是 当前 执行 的 ...

网友评论

      本文标题:javaScript 异步任务

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