Promise基本用法

## promise概述

- 基本语句 resolve,reject,then,catch

- 三种状态:pending,fulfilled,rejected

---

### 基本用法

- promise初始化

```

var promise = new Promise(function(resolve,reject)

    resolve('test')

    reject('error')//或者下面这种

    throw 'error' //推荐

);

```

- then,catch用法

```

promise.then(function(data) {

    console.log('success');

}).catch(function(error) {

    console.log('error', error);

});

```

---

### 不常用的方法

- all用法

```

var p = Promise.all([p1,p2,p3])

```

概述:全部都是fulfilled,才执行then,一个是rejected就catch.

**重点**

执行顺序是按参数顺序,不是会回调顺序,并行执行

- race用法

代码同all,有一个状态改变就执行

- 便捷用法

```

Promise.resolve(value)

Promise.reject(reason)

```

---

### 常见问题

1. reject和catch区别

```

var promise = new Promise(function (resolve, reject) {

    reject("333")

    resolve(x);

});

promise.then((value) => {

    console.log(value)

}).catch((error) => {


});

// promise.then(function (data) {

//    console.log(data)

// }, function (error) {

//    console.log(error)

//    });

```

**(待议)**

then中的异常catch也能捕获,上文中第二种方式收不到resolve(x)的异常

2. 如果在then中抛错,而没有对错误进行处理(即catch),那么会一直保持reject状态,直到catch了错误.

```

function taskA() {

    console.log(x);

    console.log("Task A");

}

function taskB() {

    console.log("Task B");

}

function onRejected(error) {

    console.log("Catch Error: A or B", error);

}

function finalTask() {

    console.log("Final Task");

}

var promise = Promise.resolve();

promise

    .then(taskA)

    .then(taskB)

    .catch(onRejected)

    .then(finalTask);


-------output-------

Catch Error: A or B,ReferenceError: x is not defined

Final Task

```

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Promise 对象 Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函...
    neromous阅读 12,774评论 1 56
  • 一、Promise的含义 Promise在JavaScript语言中早有实现,ES6将其写进了语言标准,统一了用法...
    Alex灌汤猫阅读 4,247评论 0 2
  • 一. Callback (回调函数) 1.定义:把函数当作变量传到另一个函数里,传进去之后执行甚至返回等待之后的...
    hutn阅读 5,430评论 0 2
  • 特点 Promise能将回调分离出来,在异步操作执行之后,用链式方法执行回调,虽然es5用封装函数也能实现,但是如...
    一二三kkxx阅读 3,762评论 0 1
  • 如何让我不爱你 兜兜 你有俊美的脸庞 特别是你的眼睛 总是笑起来的样子 我从未见过你 生气...
    我本为旭阅读 1,313评论 0 1