AJAX与异步回调的一点看法

2019-12-13  本文已影响0人  郑馋师

异步

定义

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

异步函数特征

其返回值为

  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

异步函数特征

同步

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

上一篇 下一篇

猜你喜欢

热点阅读