当前位置: 首页 > wzjs >正文

锦州网站建设百度推广是怎么做的

锦州网站建设,百度推广是怎么做的,对网站设计的建议,b站如何推广自己的作品ECMAScript6新增的引用类型promise,是异步编程的一种解决方案,可以通过new操作符来实例化,相对于传统的解决方案(回调地狱)更加强大。所谓promise,简单说就是一个容器,里面保存着某个未来才会结…

ECMAScript6新增的引用类型promise,是异步编程的一种解决方案,可以通过new操作符来实例化,相对于传统的解决方案(回调地狱)更加强大。所谓promise,简单说就是一个容器,里面保存着某个未来才会结束的事件的结果,从语法上说,promise是一个对象,从他 可以获取异步操作的消息,promise提供了统一的API,各种异步操作都可以用同样的方法进行处理,
1 自己身上有all reject resolve这几个方法
2 原型上有then catch 等方法
3 一旦建立,就无法取消,也不支持进度通知

1、什么是回调地狱?
由于回调函数是异步的,每一层的回调函数都需要依赖上一层的回调执行完,所以形成了层次嵌套的关系,最终形成了回调地狱

doSomething(function(result) {doSecondThing(result, function(newResult) {doThirdThing(newResult, function(finalResult) {console.log(finalResult)}, failureCallback)}, failureCallback)
}, failureCallback)

通过promise改写上面的代码

doSomething().then(function(result) {return doSecondThing(result)
})
.then(function(newResult) {return doThirdThing(newResult)
})
.then(function(finalResult) {console.log(finalResult)
})
.catch(failureCallback)

链式操作降低了编码难度,代码的可读性明显增强。

2、promise的理解:
2.1 实例对象中的一个属性 PromiseState:
有三种状态

  • pending(待定)
  • fulfilled(兑现,有时候也称为解决resolved)
  • rejected(拒绝)

2.2 实例对象中的另一个属性 PromiseResult:
保存着对象 成功或失败的结果
resolve
reject

// resolve 解决 函数类型的数据
// reject 拒绝 函数类型的数据
const p1 = new Promise ((resolve, reject) => {console.log(1) // 执行器函数会在promise内部立即同步执行setTimeout(() => {let a = 30if (a <= 30) {resolve() // 将promise对象的状态设置为 成功} else {reject() // 将promise对象的状态设置为 失败}})
})
// 调用then方法
p1.then(() => {// 状态成功的回调alert('恭喜您中奖')
}, () => {// 状态失败的回调alert('谢谢惠顾')
})
console.log(2)

2.3 promise的基本流程
1、new Promise() pending状态;
2、执行异步操作,如果成功了执行resolve(),promise对象的状态为resolved,如果失败了执行jeject(),promise对象的状态为rejected;
3、then()方法被执行,第一个参数为成功的回调函数,第二个参数为失败的回调函数,并且返回一个新的promise。

2.4 Promise的函数方法

// 如果传入的参数为非promise类型的对象,则返回的结果为成功的promise对象
let p1 = Promise.resolve(123)
console.log(p1)
// 如果传入的参数为promise类型的对象,则参数的结果决定了resolve的结果
let p2 = Promise.resolve(new Promise((resolve, reject) => {reject('Error)
}))
p2.catch(err => {console.log(err)
})
console.log(p2)
// 返回的结果永远都是失败的
let p1 = Promise.reject(456)
let p2 = Promise.reject(new Promise((resolve, reject) => {resolve('OK)
}))
console.log(p1, p2)
let p1 = new Promise((resolve, reject) => {resolve('OK)
})
let p2 = Promise.resolve(123)
let p3 = Promise.reject(456)
// 传入的promises数组的结果都为resolved,则返回的新的promise结果为成功
const res1  = Promise.all([p1,p2])
console.log(res1)
// 传入的promises数组的结果有一个为rejected,则返回的新的promise结果为失败
const res2  = Promise.all([p1,p3])
console.log(res2)
// Promise.race()方法,接受一个promises数组参数,返回一个新的promise,第一个完成的promise的结果状态就是最终的结果状态
let p1 = new Promise((resolve, reject) => {resolve('OK)
})
let p2 = Promise.resolve(123)
let p3 = Promise.reject(456)
const res = Promise.race([p1,p2,p3])
console.log(res)

2.5 改变promise对象状态的方式

const p = new Promise ((resolve, reject) => {setTimeout(() => {let a = NANif (a <= 30) {// 第一种方式,resolve函数resolve()} else if(a > 30) {// 第二种方式,reject函数reject()} else {// 第三种方式,throwthrow new Error('报错了')}}10)
})
console.log(p)

2.6 当一个promise指定多个成功/失败回调参数,都会调用

const p = new Promise ((resolve, reject) => {let a = NANif (a <= 30) {resolve(a)} else  {reject()} 
})
// 指定回调1
p.then(res => {console.log(res)
})
// 指定回调2
p.then(res => {alert(res )
})

2.7 promise对象then方法返回结果特点
promise.then()返回的新的promise的结果状态由then指定的回调函数执行结果决定。

const p = new Promise ((resolve, reject) => {resolve('OK')
})
// 执行then方法
const result = p.then(res => {console.log(res)// 第一张情况,抛出错误throw new Error('报错了') // 返回rejected状态// 第二张情况,返回一个非promise类型的对象return 123  // 返回resolved状态// 第三张情况,返回一个promise类型的对象return new Promise ((resolve, reject) => {reject()  // 返回结果根据此状态决定})
}, error => {console.log(error )
})

2.8 promise如何串联多个任务
原理是then方法的返回结果也是一个promise对象

const p = new Promise ((resolve, reject) => {setTimeout(() => {resolve('OK')}10)
})
p.then(res => {return new Promise ((resolve, reject) => {resolve('success')})
}).then(res => {console.log(res) // 'success'
})then(res => {console.log(res) // undefined
})

2.9 promise异常穿透
当使用promise的then链式调用,可以在最后指定失败的回调,前面任何操作发生异常,都会传达到最后失败的回调中处理。

const p = new Promise ((resolve, reject) => {setTimeout(() => {resolve('OK')}10)
})
p.then(res => {console.log(123)throw '报错了'
}).then(res => {console.log(456) 
}).then(res => {console.log(789) 
}).catch(err => {console.log(err) // '报错了'
})

2.10 如何中断promise链
只有返回一个pending状态的promise对象,才能中断

const p = new Promise ((resolve, reject) => {setTimeout(() => {resolve('OK')}10)
})
p.then(res => {console.log(123)return new Promise(() => {}) // 中断promise链 不执行后面的方法
}).then(res => {console.log(456) 
}).catch(err => {console.log(err)
})
http://www.dtcms.com/wzjs/300002.html

相关文章:

  • jsp购物网站开发视频关键词优化公司排名榜
  • 免费咨询法律问题找哪里网站优化外包费用
  • 自己做电影网站有没有钱赚网奇seo赚钱培训
  • 自建网站公司网站注册
  • 门户网站建设单位资质要求广点通
  • 惠阳网站优化郑州seo代理公司
  • phpmysql网站开发技术微信小程序开发文档
  • 阿里云apache重写wordpressseo的培训网站哪里好
  • 怎么描述网站主页做的好seo范畴
  • 地方网站名称做网站公司哪家比较好
  • 创业做招商加盟类网站赚钱渠道网官网
  • 大连手机自适应网站制作公司软文代发价格
  • 网站登录注册怎么做网推广公司
  • 建设网站去哪里备案百度seo优化培训
  • wordpress伪静态设置方法郑州seo排名工具
  • 当前全国疫情最新消息网站搜索引擎优化技术
  • 地区性门户网站是什么意思sem网站推广怎么做
  • win10系统可以做网站搭建aso应用商店优化
  • 网站开发管理制度济南seo优化公司助力网站腾飞
  • 企业门户网站登录可以免费发广告的网站
  • 做数据新闻的网站seo最新教程
  • 医药包装设计公司天津网站优化
  • 在线拍卖网站源码google google
  • 深圳去聋哑做义工申请网站网站seo整站优化
  • 建设机械网站方案seo关键词排名优化专业公司
  • 南宁seo网络推广东莞seo网络公司
  • 在线建设网站百度搜不干净的东西
  • 网站左侧 导航营销型制作网站公司
  • 优设设计师网站苏州百度推广
  • 在本地搭建wordpress南昌seo优化公司