promise学习

首先,我们来看一个常见的例子

function 摇色子() {
  setTimeout(function () {
    console.log('开始摇')
    var random = Math.random()
    if (random > 0.5) {
      return '大'
    } else {
      return '小'
    }
  }, 1000)
}
var result = 摇色子()
console.log(result)

我们打开控制台,会看到首先输出的是undefined,然后过了一秒钟输出’开始摇‘,这就是常见的异步例子,针对异步这种情况,我们一般使用回调的方法去拿到结果。

function 摇色子(callback) {
  setTimeout(function () {
    console.log('开始摇')
    var random = Math.random()
    if (random > 0.5) {
      callback('大')
      return '大'
    } else {
      callback('小')
      return '小'
    }
  }, 1000)
}
var result = 摇色子(function(data){
  console.log(data)
})
console.log(result)

结果是undefined,开始摇,大。接下来我们使用promise去接受异步的结果。

console.log(1)
function 买大() {
  console.log(2)
  return new Promise(function (resolve, reject) {  //
    console.log(3)
    setTimeout(function () {
      console.log(4)
      var random = Math.random()
      console.log(random)
      if (random > 0.5) {
        resolve()
      } else {
        reject()
      }
    }, 1000)
  })
}
console.log(5)
var aPromise = 买大()
console.log(6)
aPromise.then(function () {
  console.log(7)
  console.log('win')
}, function () {
  console.log(7)
  console.log('lose')
})

你可能感兴趣的:(promise学习)