美文网首页
AJAX与异步回调的一点看法

AJAX与异步回调的一点看法

作者: 郑馋师 | 来源:发表于2019-12-13 12:27 被阅读0次

异步

定义

异步就是不可以直接拿到结果,要通过别的方法拿到,包括两个方法,轮询和回调
Tips:

  • 如果 JS 不能直接拿到一个函数的结果,可以先去执行别的代码,等结果到了再取结果,这就是异步
  • 异步的结果可以通过轮询获取,轮询就是定时去询问结果拿到了没有
  • 异步的结果可以通过回调获取,一般来说结果会被作为回调的第一个参数
  • 异步的好处是可以把用来等待的时间拿去做别的事情

异步函数特征

其返回值为

  1. setTimeOut
  2. Ajax
  3. AddEventListener
    这三种多为异步函数
    虽然Ajax可以用同步来调用,但这是傻x行为,这样调用会导致网页很卡······

异步调用的方法

轮询

就是每过一定的时间去问一次

回调

通过别的东西通知你

通过回调使异步拿到结果的过程

  • 由于不能直接拿到结果,所以要先传一个回调给异步任务。
  • 在异步任务完成的时候调用回调。
  • 调用的时候把结果作为参数,从而调用

认真分析回调

被作为实参传入另一函数,并在该外部函数内被调用,用以来完成某些任务的函数,称为回调函数。回调函数就是写给别人用的函数,是写个浏览器回头调用的,调用的时机是等到浏览器的ready state=4,也就是读取服务器相应完了才会用的。要注意写给别人的才是回调,写给自己的不是回调
eg:

let f1=()=>{}
let f2=(fn)=>{fn()}
f2(f1)

此时fq的地址就作为fw中的一个参数被调用,所以fq就是一个回调函数。
直接调用的f2则不是回调函数。若是这样

let f1=()=>{}
let f2=(fn)=>{}
f2(f1)

虽然此时f2里面没有写怎么调用f1,但f2接受了f1这个参数肯定是要用的,所以此时f1仍然是回调,此时f2对于f1的调用方法就是不管他,让他自生自灭,这也算是调用了。

eg2

let a = 1
function f1(){
    (function (){var a = 2})()
    console.log(a)//1
}
f1()

其实它仍旧是最普通的函数调用,f1.call(undefined),this指向window,打印出的是全局的a。
借此,我们终于可以解释为什么setTimeout总是丢失this了,因为它也就是一个回调函数而已。回调函数就是会自动指向window而非当前对象,这也被称为回调函数的this丢失。

回调的Tips

  • 回调可以用于同步任务,不一定非要用于异步任务
  • 有的时候回调还可以传给一个对象,如 request.onreadystatechange,等待浏览器来调用

异步函数特征

同步

一定要直接拿到结果,不然就不走

相关文章

  • AJAX与异步回调的一点看法

    异步 定义 异步就是不可以直接拿到结果,要通过别的方法拿到,包括两个方法,轮询和回调Tips: 如果 JS 不能直...

  • 异步相关

    一:同步异步XmlHttpRequest: Ajax原理: a->b->c地狱回调问题: Promise解决回调地...

  • ajax异步回调

    promise异步封装例子

  • 浅谈js中的回调地狱问题

    一、什么是回调地狱 说起回调地狱 首先想到的是异步在js中我们经常会大量使用异步回调,例如使用ajax请求 我们来...

  • jQuery粗略源码解析3 异步队列

    异步队列模块用于异步任务和回调函数的解耦,为ajax模块,队列模块提供基础功能。jQuery.ajax()负责创建...

  • AJax基础

    什么是Ajax Ajax是用JavaScript执行异步网络请求,请求是异步执行的,也就是说,要通过回调函数获得响...

  • js异步:现在与将来

    最简单的异步方式:回调 最早听说异步是在发送ajax请求的时候,因为我们不希望因为发送ajax的进程阻挡了其他事件...

  • promise原理及实现

    回调地域:上一个回调函数中继续做事情,而且继续回调(在真实项目的Ajax请求中经常出现回调地域),异步请求,不方便...

  • ES6 - Promise和Ajax (精华)

    导读: Promise实际是充当ajax获取后台数据后执行回调的异步执行顺序的一个媒介,客观来说就是避免ajax回...

  • Promise和async\await

    回调函数 用来处理异步问题,例如发送Ajax,setTimeout等 Promise 封装的例子 async\await

网友评论

      本文标题:AJAX与异步回调的一点看法

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