promise
promise.all([pro1,pro2])
将封装好的promise实例,封装到一个promise实例中,pro1和pro2是另外创建的promise实例,里面可以放不止两个实例,只要这些实例都为成功(resolve),那么最终就会返回成功的。如果有一个为失败(reject),那么就会返回失败promise.race([pro1,pro2])
会将最先执行的promise实例的状态返回出来,无论失败还是成功promise.any([pro1,pro2])
只要有一个实例的状态为成功,那么就返回成功,只有所有实例都为失败,才会返回失败的状态
// promise.all 可以将封装好的promise实例,添加到一个promise实例中,里面的promise实例如果都为成功,会将所有的成功状态打出来,如果有一个为失败的状态,那么就会将失败的状态返回出来
let p1 = new Promise(function(reslove,reject){
reslove("p1成功")
})
let p2 = new Promise(function(reslove,reject){
reslove("p2成功")
})
Promise.all([p1,p2]).then(res=>{
console.log(res)
}).catch(err=>{
console.log(err) // ["p1成功","p2成功"]
})
let p3=Promise.reject("p3失败")
Promise.all([p1,p2,p3]) // "p3失败"
// promise.race也能将封装好的promise实例添加到一个promise实例中,无论成功与失败,只返回先执行的
let p4 = new Promise(function(resolve,reject){
setTimeout(()=>{
resolve("p4成功")
},2000)
})
let p5 = new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve("p5成功")
},1000)
})
// Promise.race([p4,p5]).then(res=>{
// console.log(res)
// }).catch(err=>{
// console.log(err)
// })
let p6=Promise.reject("p6失败")
Promise.race([p4,p6,p5]).then(res=>{
console.log(res)
}).catch(err=>console.log(err))
// promise.any 只要有一个实例状态为resolve,就返回成功状态,只有全为reject才会返回reject状态
Promise.any([p4,p5,p6]).then(res=>console.log(res)).catch(err=>console.log(err))
Promise.any([p3,p6])
axios实现同步请求
axios执行异步的请求,我们可以使用async和await进行操作,让axios实现同步请求
async function getData (){ // 通过async函数与await实现同步操作
let data = {};
let res = await axios.get("url") // await将异步转同步
data= res.data
}
ajax实现同步请求
- 原生js中ajax请求在设置请求时,在open中要写上请求方式、请求地址、是否异步,我们只要传一个false过去即可实现,ajax默认是进行异步请求的
- 在jQuery中,传递参数时,给一个
async:false
也可以实现
$.ajax({
type: "post",
url: "url",
data: {},
async: false, //同步
});
判断客户端是iso还是安卓
通过navigator.userAgent
就可以获取相关的信息,只要判断里面的值是否包含Android 或者ISO就可以进行判断