回调函数
一个函数被作为参数传递给另一个函数(在这里我们把另一个函数叫做“第二个函数”),回调函数在第二个函数中被调用。
回调函数
回调函数是出现在两个函数之间的关系
当你调用a函数的时候,把b函数当作参数传递进去
在a函数里面使用形参数的方式调用b函数
回调函数作用:为了在异步的末尾做写事情的使用
如果同步是同步代码,就不要回调函数
function fn(cb){//fn里面传的是形参
setTimeout(function(){//定时器和ajax都是异步执行
console.log(‘abc’);
cb(‘j=300’)
},1000);
}
Fn(function(res){//参数
Console.log(res);
})
回调函数的应用向后端发送请求
回调函数应用在(ajax向后端发送请求)
//封装
function ajaxcb(url,cb){
//创建ajax对象
var xhr=new XMLHttpRequest();
//配置请求信
xhr.open(‘GET’,url);
//接收响应体
xhr.οnlοad=function(){
cb(xhr.responseText);
};
//发送请求
xhr.send();
}
ajaxcb(’./a.php’,function(res){
console.log(res);
})
Promise 作用:解决回调地狱的方案之一 把回调地狱写的优雅的方案之一
回调函数的3个状态
继续 -> pending
成功 -> fulfilled
失败 –> rejected
Promise会帮你做异步的事情
会在成功的时候给你一个成功的回调
会在失败的时候给你一个失败的回调
resolve(),就回调用then里面的那个函数
reject(),就会调用catch里面的那个函数
//promise解决回调的地域方案之一
var p1=new Promise(function(resolve,reject){
console.log(“这是一个函数”);
resolve();//后面的结果就不会执行了
//reject();//promise.html:1 Uncaught (in promise) undefined
},);
p1.then(function(){
console.log(“接收到了请求”);
})
p1.catch(function(){
console.log(“这是失败的请求”);
})
Promise 的语法
+ 在 es6 里面有一个内置的构造函数叫做 Promise
+ 语法: let p1 = new Promise(function () { 你要做的异步的事情 })
+ promise 对象里面由两个方法
+ 一个叫做 then => 就是 p1 帮你做的异步的事情成功的时候执行的
Then函数
P1.then(function(){})
Catch函数
P1.catch函数
P1.catch(function(){})
+ 一个叫做 catch => 就是 p1 帮你做的异步的事情失败的时候执行的
Promise的列子
//promise异步事情 三个状态{pending:继续,fulfilled:成功,rejected失败},2个结果{成功或失败}
var p=new Promise(function(resolve,reject){//new promise是一个构造函数,里面的参数可以是函数 {resolve,reject就是形参}
//通过ajax向后端发送请求
//创建一个ajax 对象
var xhr=new XMLHttpRequest();
xhr.open(‘GET’,’./promisxe.php’);
xhr.οnlοad=function(){
if(xhr.status200&&xhr.readyState4){
// console.log(“请求正确”);
resolve(xhr.responseText);
}
if(xhr.status404){
// console.log(“请求地址失败”);
reject(“请求地址失败”);
}
}
xhr.send();
});
// 调用then函数
p.then(function(res){//实参
// console.log("ajdj=");
console.log(res);//res就是resolve()里面的实参 res接受得到的是后端返回的内容
});
//调用catch函数
p.catch(function(){//没有必要写实参接受resolve()里面的参数
console.log(“执行了”);
// console.log(res);没有必要写
});
以上的是回调函数, 回调函数应用在promise中,
并且应用在ajax发送请求给后端,后端响应给前端。