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)
});
// 出错了
相关文章
|
3月前
|
前端开发 API 容器
说说你对 promise 的了解
说说你对 promise 的了解
22 0
|
9月前
|
前端开发 小程序 JavaScript
promise 应用
promise 应用
48 0
|
10月前
|
前端开发 JavaScript 测试技术
6 # 实现简单的 promise
6 # 实现简单的 promise
29 0
|
2月前
|
前端开发
|
3月前
|
前端开发 JavaScript
Promise 详解
Promise 详解
45 0
|
8月前
|
前端开发
Promise
Promise
39 1
|
12月前
|
存储 JSON 前端开发
深入使用 Promise
前面各种铺垫已经好了,现在我们一起来用一用Promise!
57 0
|
12月前
|
前端开发
对promise的理解分享
对promise的理解分享
|
前端开发 JavaScript
深入理解Promise
深入理解Promise
74 0
|
前端开发 JavaScript
Promise使用详解
JS查漏补缺系列是我在学习JS高级语法时做的笔记,通过实践费曼学习法进一步加深自己对其的理解,也希望别人能通过我的笔记能学习到相关的知识点。这一次我们来了解Promise使用详解
85 0