Promise总结

简介: Promise是一种异步编程解决方案,es6中原生提供了Promise对象有三种状态:pending、resolved、rejected。状态一旦改变,就不会再变。基本用法var p = new Promise(function(resolve, reject){ resolve('成功') // or reject('失败')})p.

Promise是一种异步编程解决方案,es6中原生提供了Promise对象
有三种状态:pendingresolvedrejected。状态一旦改变,就不会再变。

基本用法

var p = new Promise(function(resolve, reject){
  resolve('成功')
  // or
  reject('失败')
})
p.then(function(result) {
  console.log(result) // 成功
}).catch(function(error){
  console.log(error) // 失败
})

Promise.prototype.then()

链式调用,参数为函数,第一个函数得到成功结果,第二个函数得到失败结果

var p = new Promise(function(resolve, reject){
  resolve()
})
p.then(function(success){
  console.log(success)
}, function(error){
  console.log(error)
})

Promise.prototype.catch()

捕获失败状态

Promise.prototype.finally()

es2018中添加,无论状态是什么都会去执行

Promise.all()

Promise.all([p1, p2, p3]) // p1,p2,p3都为promise对象

Promise.race()

Promise.race([p1, p2, p3]) // p1,p2,p3都为promise对象

Promise.resolve()

将现有对象转化为Promise对象

  1. 参数是一个Promise实例,那么Promise.resolve将不做任何修改,直接返回这个实例
  2. 参数是一个thanable对象,具有then方法的对象

    let thanable = {
      then: function(resolve, reject){
        resolve(2332)
      }
    }
    
    let p1 = Promise.resolve(thenable)
    p1.then(function(value) {
      console.log(value) // 2332
    })

    Promise.resolve方法将会把这个对象转化为Promise对象,并立即执行thenable的then方法

  3. 参数不是具有then方法的对象,或者不是对象。是一个原始值,则直接返回Promise对象,状态为resolved

    var p = Promise.resolve('hello')
    p.then(function(value){
      console.log(value) // hello
    })
  4. 不带有任何参数,直接返回一个resolved状态的Promise对象

Promise.reject()

Promise.reject(reason) 方法会返回一个新的Promise实例,状态为rejected

const p = Promise.reject('出错了');
// 等同于
const p = new Promise((resolve, reject) => reject('出错了'))

p.then(null, function (s) {
  console.log(s)
});
// 出错了
相关文章
|
15天前
|
前端开发 API 容器
说说你对 promise 的了解
说说你对 promise 的了解
9 0
|
5月前
|
前端开发 小程序 JavaScript
promise 应用
promise 应用
35 0
|
6月前
|
前端开发 JavaScript 测试技术
6 # 实现简单的 promise
6 # 实现简单的 promise
21 0
|
1月前
|
前端开发
对Promise的理解
对Promise的理解
15 2
|
3月前
|
前端开发 JavaScript
Promise 详解
Promise 详解
28 0
|
8月前
|
存储 JSON 前端开发
深入使用 Promise
前面各种铺垫已经好了,现在我们一起来用一用Promise!
47 0
|
8月前
|
前端开发
对promise的理解分享
对promise的理解分享
|
8月前
|
前端开发
什么是promise,解决了什么
什么是promise,解决了什么
105 0
|
9月前
|
前端开发 JavaScript
深入理解Promise
深入理解Promise
64 0
|
前端开发 API
对promise的一点了解
所谓 Promise,就是一个对象,用来传递异步操作的消息。它代表了某个未来才会知道结果的事件(通常是一个异步操作),并且这个事件提供统一的 API,可供进一步处理。
89 0