提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
例如:一些promise的理解
一、promise是什么?
promise是解决异步的方法,本质上是一个构造函数,可以用它实例化一个对象。promise只有一个参数,是一个函数,这个函数有俩个参数,参数1是resolve(成功),参2是reject(失败)。
promise有三种状态,未完成,已完成,失败。
promise有一个then方法,then方法有俩个参数,为2个函数,分别对应resolve,reject,resolve为成功时调用这个函数,失败则调用reject函数,promise主要用来解决回调地狱的问题
二、使用
代码如下(示例):
function ajax({url,data,type='get',async=true}){
return new Promise(function(chenggong,shibai){
var x = XMLHttpRequest()
//拼接路径和参数
if(data && type=='get'){
url = url+"?"+data
}
x.open(type,url,async)
if(type == 'post'){
x.setRequestHeader('content-type','application/x-www-form-urlencoded')
x.send(data)
}else{
x.send()
}
x.onreadyStatechange=function(){
if(x.readystate == 4 && x.Status == 200){
chenggong( x.response)
}
}
})
}
var xx = ajax(
{
url:'1.json',
data:"id=18&name=张三" ,
success:function(da){
}
}
)
xx.then(function(da){
//da就是ajax返回的数据
//你就可以在这写你的逻辑
//这个return 别丢了
return ajax(
{
url:'2.json',
data:"id=18&name="+da.name ,
}
)
}).then(function(da2){
return ajax(
{
url:'3.json',
data:"id=18&name=张三"+da2 ,
}
)
}).then(function(da3){
})
注意
如果你写多个then,请在前面的处理函数中返回一个新的Promise对象,你忘记返回了后面的then都会默认执行第一个函数