promise详解

promise 详解

# 为什么要用 promise

  • 解决 AJAX 的回调地狱问题
  • 代码逻辑更加清晰

# 常规用法

  • 状态一旦发生变更,无法回头
  • 三个状态,pending,resolved,rejected
  • .then return 出来的是已完成状态的 promise 对象,所以可以继续.then
// 操作错误时,如果传入了reject方法,就近reject方法,如果没有,就会进catch。如果都没有,就无事发生
var p = new Promise(function(resolve, reject) {
  var flag = false
  if (flag) {
    resolve('这是数据2')
  } else {
    reject('这是数据2')
  }
})
p.then(
  function(data) {
    //状态为fulfilled时执行
    console.log(data)
    console.log('这是成功操作')
  },
  function(reason) {
    //状态为rejected时执行
    console.log(reason)
    console.log('这是失败的操作')
  }
)
  .catch(function(reason) {
    console.log(reason)
    console.log('这是失败的操作')
  })
  .finally()

# promise.all

Promise.all 传入一个 promise 对象的数组,等待这个所有的请求执行完毕,才会进入.then。 返回的参数也是所有请求的结果数组。 一旦任何一个请求失败,都会进入 rejected

const p1 = new Promise((resolve, reject) => {
  resolve('hello')
}).then(result => result)

const p2 = new Promise((resolve, reject) => {
  throw new Error('报错了')
}).then(result => result)

Promise.all([p1, p2])
  .then(result => console.log(result))
  .catch(e => console.log(e))

# promise.any

跟all差不多,但是只要有一个请求是成功的,都会走到.then里

postCss适配

postCss适配

postCss 适配 https://www.jianshu.com/p/cedf82c362dc

rtsp视频流播放

rtsp视频流播放