加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

ES6的Promise对象的理解

发布时间:2020-12-15 00:02:38 所属栏目:C语言 来源:网络整理
导读:应用场景 用于处理可以各种繁复的异步回调,防止形成回调嵌套,形成 Callback Hell。 用于确定异步请求先后执行顺序,当多个异步请求之间存在相互依赖关系,在网络不稳定的情况下异步请求返回的先后顺序也可能不确定,从而出现页面加载出错。 示例 getVal(tr

应用场景

  1. 用于处理可以各种繁复的异步回调,防止形成回调嵌套,形成 Callback Hell。

  2. 用于确定异步请求先后执行顺序,当多个异步请求之间存在相互依赖关系,在网络不稳定的情况下异步请求返回的先后顺序也可能不确定,从而出现页面加载出错。

示例

getVal(true)
.then(function(msg) {
return msg;
})
.then(function(msg) {
return msg + 'n2-stepn'
})
.then(function(msg) {
console.log(msg + '3-step');
})

getVal(false)
.then(function(msg) { console.log(msg) })
.catch(function(msg) { console.log(msg) })

var step1 = new Promise(function (resolve) {
setTimeout(function () {
resolve('step-1');
},5000);
})

var step2 = new Promise(function (resolve) {
setTimeout(function () {
resolve('step-2');
},1000);
})

Promise.all([p1,p2]).then(function (result) {
console.log(result);
})

通过上面示例可看出:

  1. reslove相当于ajax中的success回调,并传递一个参数用于后续操作

  2. reject相当于ajax中error回调,同时将错误信息传递

  3. then(onFulfilld,onRejected)用于promise的链式调用(每次执行该方法总会返回一个Promise对象),保证按照我们的需要的顺序进行。同时,第一个参数onFulfilled函数中的返回值可作为后续操作的参数。

  4. catch方法是 then(onFulfilled,onRejected) 方法当中 onRejected 函数的一个简单的写法,也就是说可以写成then(fn).catch(fn)

  5. Promise.all方法可以接收一个元素为 Promise 对象的数组作为参数,当这个数组里面所有的 Promise 对象都变为 resolve 时,该方法才会返回。与它类似的,Promise.race它同样接收一个数组,不同的是只要该数组中的 Promise 对象的状态发生变化(无论是 resolve 还是 reject)该方法都会返回。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读