什么是同步
能直接拿到结果
什么是异步
不能直接拿到结果
异步函数
如果一个函数的返回值处于setTimeout、AJAX(XMLHttpRequest)、AddEventListener,这三个东西内部,那么这个函数就是异步函数
注:不要把AJAX设置为同步
异步过程中可以回调或者轮询
Promise
Promise 的用途 前端解决异步问题的方案,用于避免回调地域,让代码看起来更同步
如何创建一个 new Promise:
return new Promise((resolve,reject)=>{})
如何使用 Promise.prototype.then
const promise1 = new Promise((resolve, reject) => {
resolve('Success!')
})
promise1.then((value) => {
console.log(value)
})
Promise.catch的用法就是和then一样,先执行这个(then)再执行那个(catch),
如何使用 Promise.all
let Promise1 = new Promise(function(resolve,reject)=>{})
let Promise2 = new Promise(function(resolve,reject)=>{})
let Promise3 = new Promise(function(resolve,reject)=>{})
let p = Promise.all([Promise1,Promise2,Promise3])
p.then(function(){
},function(){
})
都成功才会调用
如何使用 Promise.race
const promise1 = new Promise((resolve, reject) => {
setTimeout(resolve, 500, 'one')
})
const promise2 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'two')
})
Promise.race([promise1, promise2]).then((value) => {
console.log(value)
})
谁第一个成功或失败,就认为是race的成功或失败