昨天说了,听课并没有听懂promise到底讲的是什么。不过后来看文档发现其实还是懂一些了。
所以发一篇文章记录一下JavaScript promise对象。
首先Promise是ECMAScript 6原生提供的对象,Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息。
说promise之前,先说一下昨天说的
语法糖
吧。其实后来写完那篇关于业务逻辑和语法糖的文章后,仔细想了一下,发现其实好多都可以算作是语法糖吧,比如说函数,其实也是为了提高效率而出现的,毕竟其实如果不用函数的话,我们可以把要用到的代码一直复制呗,还有类,等等这些大概其实都可以归到语法糖这一类中。
好了,回归正题。

promise首先最重要的一个特性就是状态不受外界的改变而改变。

解释这个之前,我们先要介绍一下promise的三个状态,分别是peding:初始状态。fulfilled:成功状态。rejected:失败状态。
分别是这三个状态,首先进入peding状态进行初始化,然后根据条件来决定是成功还是失败,之后修改状态,然后这个状态就不会发生改变了,不会发生成功状态变成了失败,反之亦然。promise的汉语意思是承诺,代表着只要做出了承诺,就不会改变。
然后另一个特性就是状态改变后,

任何时候都可以得到这个状态。

简单解释一下,就是我们从peding状态改到成功状态后,状态就会发生固定,然后就会一直保持这个状态,我们再对promise进行请求的话,也会立刻得到这个状态。

然后在es6中,我们通过promise构建函数的话,需要传入一个函数,promise接受两个函数参数,执行完第一个参数之后,就会改变当前的状态为已完成,如果执行的是第二个参数,则是以失败状态。
var promise = new Promise(function(resolve, reject) {
// 异步处理 // 处理结束后、调用resolve 或 reject
});

我们简单的看一下promise的创建,通过new Promise来构建函数。之后传入参数,最后在函数中进行参数的调用,如果是第一个则promise改为完成状态,如果是第二个则是失败状态。
然后我们如果调用的话,可以通过.then来进行promise的调用。
我们对于已经实例化过的 promise 对象可以调用 promise.then() 方法,传递 resolve 和 reject 方法作为回调。
JavaScript promise对象
通过上面的总结,我们应该可以比较明确的知道promise的基础部分。
不过其实可能对catch不太明白。
其实catch跟then类似,都是获取promise的内容,但是then是一个顺序问题,而catch则是获取错误,我们写代码不可避免的会出现各类错误,有的是我们编写的时候就出现的,有的是用户使用的时候出现的,我们可以通过catch来捕获错误,然后进行相应的处理。.then(function(posts) {
// some code
})
.catch(function(error) {
// 处理前一个回调函数运行时发生的错误
console.log('发生错误!', error);
});

当然,其实promise对象的错误具有一种很好的特性,那就是冒泡性,如果没有catch捕获错误的话,那么就会一直向后传递,直到出现catch捕获错误为止,比如说我们第一行就出现了错误,但是没有catch,那么就会一直向后传递,直到捕获到这个错误才会停止传递,这就是promise对象的一个比较鲜明的特性。
promise对象简单介绍到这里,如果有什么疑问的话,可以在评论区留言,我会在看到的第一时间回复的。
当然比较学术性的其实我可能也不会,所以推荐几个网址给大家,当然,这是关于JavaScript promise对象的。
参考链接:

  • https://wohugb.gitbooks.io/ecmascript-6/content/docs/promise.html
  • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise
本文作者:博主:     文章标题:JavaScript promise对象
本文地址:https://zjzdmc.top/jsfx/122.html     
版权说明:若无注明,本文皆为“Datehoer的Blog-个人博客-技术分享”原创,转载请保留文章出处。
最后修改:2021 年 04 月 19 日 04 : 38 PM
如果觉得我的文章对你有用,请随意赞赏