同步、异步、promise

177 阅读1分钟

什么是同步

能直接拿到结果

什么是异步

不能直接拿到结果

异步函数

如果一个函数的返回值处于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的成功或失败