项目网络图被称为,行者seo,厦门网站建设网页设计,临沂设计公司有哪些在我们平时的方法中有很多方法是promise封装的#xff0c; 有些函数后边跟的then和catch 就是promise的方法#xff0c;先看一下pormise的特点 #xff08;1#xff09;对象的状态不受外界影响。Promise对象代表一个异步操作#xff0c;有三种状态#xff1a;pending 有些函数后边跟的then和catch 就是promise的方法先看一下pormise的特点 1对象的状态不受外界影响。Promise对象代表一个异步操作有三种状态pending进行中、fulfilled已成功和rejected已失败。 只有异步操作的结果可以决定当前是哪一种状态任何其他操作都无法改变这个状态。 这也是Promise这个名字的由来它的英语意思就是“承诺”表示其他手段无法改变。 上边这句话摘自阮一峰老师的博客 但是讲是讲出来了总感觉有些朦胧深挖一下上图看看这个promise里边到底都有什么 需要注意的是Promise 的首字母要大写 因为是构造函数 不然会报错 之前犯过这样的错误找了好久提醒一下 promise的三种状态 PromiseValue 用法 上边说了catch和then一个接收成功一个接收失败promise里边还有一个finally方法他是不管成功还是失败只要promise执行完毕这个函数都会被执行 2一旦状态改变就不会再变任何时候都可以得到这个结果。 Promise对象的状态改变只有两种可能从pending变为fulfilled和从pending变为rejected。 只要这两种情况发生状态就凝固了不会再变了会一直保持这个结果这时就称为 resolved已定型。 如果改变已经发生了你再对Promise对象添加回调函数也会立即得到这个结果。这与事件Event完全不同事件的特点是如果你错过了它再去监听是得不到结果的。 那么讲了这么一大堆 这个promise他到底有什么用处呢就是为了解决回调地狱之前在网上看到过这么一个图片 这代码看起来是不是很酸爽回调一层套一层多了的话感觉就是一个大型的冲击波冲击着js开发者的心灵 举个例子 but到这里貌似和回调没有什么毛区别 他的优势体现在哪里so 看图 打印了一下then方法 发现里边还是一个promise所以说return的结果可以继续被.then且结果可以继续被调用 如果用回调的话就会造成回调地狱现象 promise的话大大的降低了维护成本和让代码看起来更优雅 promise除了原型链上的方法之外还有一些他本身的方法如下图 promise.all() 这个方法允许传入一个数组 他会执行里边所有的promise实例 如果传入的不是promise也会被转换成promise 并且只有在传入的所有的参数都返回resovled的时候all方法才会是resolve其中有一个参数是rejected的话 all方法状态就是变成rejected promise.race 这个方法相对于上边的all而言它更像是比赛跑他会返回第一个执行完毕的promise实例的状态 promise.resolve() 这个方法会把一个对象创建成一个promise对象并return出resolve状态出来 如果传进去的是一个promise对象的话 那么就会被直接return出来并执行resolve promise.reject() 同理 该方法也会返回一个新的 Promise 实例该实例的状态为rejected并执行reject 如有不足之处请大家批评指正 转载于:https://www.cnblogs.com/netUserAdd/p/10449873.html